查看: 637|回复: 0

【NXP OKdo E1双核Cortex M33开发板】测评+ 按键控制LED灯

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2020-11-3 10:03:07 | 显示全部楼层 |阅读模式
    分享到:
    在OKdo E1开发板上配置了LED和KEY,通过它们可以学习和掌握I/O口的使用方法,其原理图见图1所示。

    1.jpg
    图1  LED和KEY原理图

    由此我们可以获知它们与MCU的连接关系如下:
    LEDR   ---PIO1_4
    LEDB   ---PIO1_6
    LEDG   ---PIO1_7
    WAKEUP --- PIO1_18
    USER       --- PIO1_9
    ISP           --- PIO0_5

    为此LED和KEY的初始定义如下:
    LED的引脚定义:
    #defineLEDR_PORT            1u
    #defineLEDR_PIN              4u
    #defineLEDR_FUNC            (IOCON_FUNC0 | IOCON_MODE_PULLUP |IOCON_DIGITAL_EN)

    #defineLEDG_PORT            1u
    #defineLEDG_PIN              7u
    #defineLEDG_FUNC            (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)

    #defineLEDB_PORT             1u
    #defineLEDB_PIN               6u
    #defineLEDB_FUNC              (IOCON_FUNC0 | IOCON_MODE_PULLUP |IOCON_DIGITAL_EN)

    #defineLEDR_NUM              1u
    #defineLEDG_NUM              2u
    #defineLEDB_NUM              3u

    KEY的引脚定义:
    #defineKEY_S2_PORT    0u
    #defineKEY_S2_PIN      5u
    #defineKEY_S2_FUNC    (IOCON_FUNC0 |IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)

    #defineKEY_S3_PORT    1u
    #defineKEY_S3_PIN      18u
    #defineKEY_S3_FUNC    (IOCON_FUNC0 | IOCON_MODE_PULLUP| IOCON_DIGITAL_EN)

    #defineKEY_S1_PORT    1u
    #defineKEY_S1_PIN      9u
    #defineKEY_S1_FUNC    (IOCON_FUNC0 |IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)

    #defineKEY2_NUM       0x02
    #defineKEY3_NUM       0x01
    #define KEY1_NUM       0x04

    LED的初始化函数:
    1. void led_init(void)
    2. {
    3. gpio_pin_config_t   gpioPinConfig;
    4. gpioPinConfig.pinDirection = kGPIO_DigitalOutput;
    5. gpioPinConfig.outputLogic  = 1u; /* output high as default. */
    6. GPIO_PinInit (GPIO, LEDR_PORT, LEDR_PIN, &gpioPinConfig);
    7. GPIO_PinInit (GPIO, LEDG_PORT, LEDG_PIN, &gpioPinConfig);
    8. GPIO_PinInit (GPIO, LEDB_PORT, LEDB_PIN, &gpioPinConfig);
    9. }
    复制代码

    KEY的初始化函数:
    1. void key_init(void)
    2. {
    3. static uint32_t i = 0;
    4. gpio_pin_config_t   gpioPinConfig;
    5. gpioPinConfig.pinDirection = kGPIO_DigitalInput;
    6. gpioPinConfig.outputLogic  = 1u;
    7. CLOCK_EnableClock(kCLOCK_Iocon);
    8. IOCON->PIO[KEY_S2_PORT][KEY_S2_PIN] = KEY_S2_FUNC;
    9. IOCON->PIO[KEY_S3_PORT][KEY_S3_PIN] = KEY_S3_FUNC;
    10. IOCON->PIO[KEY_S1_PORT][KEY_S1_PIN] = KEY_S1_FUNC;
    11. CLOCK_DisableClock(kCLOCK_Iocon);
    12. GPIO_PinInit (GPIO, KEY_S2_PORT, KEY_S2_PIN, &gpioPinConfig);
    13. GPIO_PinInit (GPIO, KEY_S3_PORT, KEY_S3_PIN, &gpioPinConfig);
    14. GPIO_PinInit (GPIO, KEY_S1_PORT, KEY_S1_PIN, &gpioPinConfig);
    15. }
    复制代码

    KEY控制LED的主程序:
    1. int main(void)
    2. {
    3. volatile uint8_t s_KeyValue = 0;
    4. POWER_SetBodVbatLevel(kPOWER_BodVbatLevel1650mv, kPOWER_BodHystLevel50mv, false);
    5. CLOCK_EnableClock(kCLOCK_Gpio0);
    6. CLOCK_EnableClock(kCLOCK_Gpio1);
    7. BOARD_BootClockFROHF96M();
    8. led_init();
    9. key_init();
    10. while (1)
    11. {
    12. s_KeyValue = key_read();
    13. if( (s_KeyValue&KEY2_NUM) == KEY2_NUM)   // ISP
    14. {
    15. led_set(LEDR_NUM, 0);
    16. }
    17. else
    18. {
    19. led_set(LEDR_NUM, 1);
    20. }
    21. if( (s_KeyValue&KEY3_NUM) == KEY3_NUM)   // WAKE
    22. {
    23. led_set(LEDG_NUM, 0);
    24. }
    25. else
    26. {
    27. led_set(LEDG_NUM, 1);
    28. }
    29. if( (s_KeyValue&KEY1_NUM) == KEY1_NUM)  // USER
    30. {
    31. led_set(LEDB_NUM, 0);
    32. }
    33. else
    34. {
    35. led_set(LEDB_NUM, 1);
    36. }
    37. }
    38. }
    复制代码
    经编译下载,其运行效果如图2~图4所示。
    2.jpg

    目标代码:

    OKdoE1_key_mdk.rar

    2.78 KB, 下载次数: 1

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 18:00 , Processed in 0.110831 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.