[活动专区] 【AT-START-F425测评】8、按键——外部中断

[复制链接]
1215|0
 楼主| freeelectron 发表于 2022-3-17 09:10 | 显示全部楼层 |阅读模式
1、硬件连接
70675623283c669188.png
可以看出,PA0通过R7下拉到GND,按键按下时, PA0的电压为3.3V,没有按下时,PA0的电压为0V,因此可以通过判断上升沿,判断按键是否按下。


2、中断函数

查看startup_at32f425.s文件,发现外部IO中断只有3个中断函数,分别是:

EXINT1_0_IRQHandler

EXINT3_2_IRQHandler

EXINT15_4_IRQHandler

从这里也可以看出,

PX0-PX1,对应一个中断函数,

PX2-PX3,对应一个中断函数,

PX4-PX15,对应一个中断函数,

需要在中断函数中判断,具体是哪个中断源,

这一点与SXX32和GX32是不一样的。


3、代码实现

  1. static uint8_t KeyState=0;

  2. void KeyInit(void)
  3. {
  4.         gpio_init_type gpio_init_structure;
  5.   
  6.     crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
  7.        
  8.         gpio_default_para_init(&gpio_init_structure);

  9.         /* configure the led gpio */
  10.         gpio_init_structure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  11.         gpio_init_structure.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  12.         gpio_init_structure.gpio_mode = GPIO_MODE_INPUT;
  13.         gpio_init_structure.gpio_pins = GPIO_PINS_0;
  14.         gpio_init_structure.gpio_pull = GPIO_PULL_DOWN;
  15.         gpio_init(GPIOA, &gpio_init_structure);
  16.        
  17.         exint_init_type  exint_init_structure;
  18.        
  19.         exint_default_para_init(&exint_init_structure);
  20.        
  21.         exint_init_structure.line_enable= TRUE;
  22.         exint_init_structure.line_mode=EXINT_LINE_INTERRUPUT;
  23.         exint_init_structure.line_polarity=EXINT_TRIGGER_RISING_EDGE;
  24.         exint_init_structure.line_select=EXINT_LINE_0;
  25.        
  26.         exint_init(&exint_init_structure);
  27.        
  28.         nvic_irq_enable(EXINT1_0_IRQn,4,0);

  29. }


  30. void KeyPolling(void)
  31. {
  32.         if(KeyState)
  33.         {
  34.                 KeyState=0;
  35.                 printf("key press\r\n");
  36.         }
  37. }


  38. void EXINT1_0_IRQHandler(void)
  39. {
  40.         if(RESET!=exint_flag_get(EXINT_LINE_0))
  41.         {
  42.                 exint_flag_clear(EXINT_LINE_0);
  43.                 KeyState=1;
  44.         }
  45. }

4、现象

3640862328a6a3cd1a.png











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

本版积分规则

个人签名:stm32/LoRa物联网:304350312

66

主题

786

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部