查看: 356|回复: 4

[原创] MCX先手尝鲜--6.按键输入

[复制链接]
  • TA的每日心情
    慵懒
    2024-2-8 09:39
  • 签到天数: 217 天

    [LV.7]常住居民III

    92

    主题

    1114

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7701

    热心会员

    最后登录
    2024-4-30
    发表于 2024-1-19 20:37:04 | 显示全部楼层 |阅读模式
    本帖最后由 az158 于 2024-1-19 20:36 编辑

    今天写一个按键输入中断代码,对MCX的gpio部分进行一个初步的了解。
    首先是配置io模式,现在并不能使用MCUXpresso Config Tools进行配置,只能手动编写了。

    1. const port_pin_config_t port0_6_pinC14_config = {/* Internal pull-up resistor is enabled */
    2.                                                  kPORT_PullUp,
    3.                                                  /* Low internal pull resistor value is selected. */
    4.                                                  kPORT_LowPullResistor,
    5.                                                  /* Fast slew rate is configured */
    6.                                                  kPORT_FastSlewRate,
    7.                                                  /* Passive input filter is disabled */
    8.                                                  kPORT_PassiveFilterDisable,
    9.                                                  /* Open drain output is disabled */
    10.                                                  kPORT_OpenDrainDisable,
    11.                                                  /* Low drive strength is configured */
    12.                                                  kPORT_LowDriveStrength,
    13.                                                  /* Pin is configured as PIO0_6 */
    14.                                                  kPORT_MuxAlt0,
    15.                                                  /* Digital input enabled */
    16.                                                  kPORT_InputBufferEnable,
    17.                                                  /* Digital input is not inverted */
    18.                                                  kPORT_InputNormal,
    19.                                                  /* Pin Control Register fields [15:0] are not locked */
    20.                                                  kPORT_UnlockRegister};
    21. /* PORT0_6 (pin C14) is configured as PIO0_6 */
    22. PORT_SetPinConfig(PORT0, 6U, &port0_6_pinC14_config);
    复制代码
    基本与LED的一样,就是配置了上拉。

    接下来就是编写主程序代码。

    1. void BOARD_SW3_IRQ_HANDLER(void)
    2. {
    3.     GPIO_GpioClearInterruptFlags(BOARD_SW3_GPIO, 1U << BOARD_SW3_GPIO_PIN);
    4.     GPIO_PortToggle(BOARD_LED_GPIO, 1u << BOARD_LED_GPIO_PIN);
    5.     SDK_ISR_EXIT_BARRIER;
    6. }


    7. int main(void)
    8. {
    9.     gpio_pin_config_t sw_config = {
    10.         kGPIO_DigitalInput,
    11.         0,
    12.     };

    13.     CLOCK_EnableClock(kCLOCK_Gpio0);
    14.     CLOCK_EnableClock(kCLOCK_Gpio3);
    15.    
    16.     BOARD_InitPins();
    17.     BOARD_PowerMode_OD();
    18.     BOARD_InitBootClocks();
    19.    
    20.     LED_RED_INIT(LOGIC_LED_OFF);
    21.    
    22.     GPIO_SetPinInterruptConfig(BOARD_SW3_GPIO, BOARD_SW3_GPIO_PIN, kGPIO_InterruptFallingEdge);
    23.     EnableIRQ(BOARD_SW3_IRQ);
    24.     GPIO_PinInit(BOARD_SW3_GPIO, BOARD_SW3_GPIO_PIN, &sw_config);
    25.    
    26.     while(1){}
    27. }
    复制代码
    代码很简单,就是配置了下降沿中断,当检测到按键按下,就反转LED灯电平。

    下载看看效果

    725333df950a3552e6095e6c72ae76ed.gif

    收工

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:55
  • 签到天数: 134 天

    [LV.7]常住居民III

    9

    主题

    294

    帖子

    0

    高级会员

    Rank: 4

    积分
    689
    最后登录
    2024-4-30
    发表于 2024-1-19 22:29:22 | 显示全部楼层
    版主大佬,感谢分享!
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:00
  • 签到天数: 536 天

    [LV.9]以坛为家II

    6

    主题

    2849

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4686
    最后登录
    2024-4-30
    发表于 2024-1-20 09:53:03 | 显示全部楼层
    版主大佬,感谢分享!
    永远开心快乐
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    7 天前
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2024-4-29
    发表于 2024-4-17 10:23:49 | 显示全部楼层
    为什么我移植的时候不加下面这句,就没法一键ISP呢?
    CLOCK_EnableClock(kCLOCK_Gpio0);
    按键中断跟时钟有什么关系呢
    力求进步
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-8 09:39
  • 签到天数: 217 天

    [LV.7]常住居民III

    92

    主题

    1114

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7701

    热心会员

    最后登录
    2024-4-30
     楼主| 发表于 2024-4-17 11:22:38 | 显示全部楼层
    eefocus_3965801 发表于 2024-4-17 10:23
    为什么我移植的时候不加下面这句,就没法一键ISP呢?
    CLOCK_EnableClock(kCLOCK_Gpio0);
    按键中断跟时钟有 ...

    不开对应的时钟,对应的外设无法运行,这里就是开启的按键的GPIO使用的时钟
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-1 00:05 , Processed in 0.123105 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表