[STM32F4] 如何实现F411RE使用HAL库实现IO中断?

[复制链接]
1464|2
 楼主| nefusmzj 发表于 2015-12-11 09:05 | 显示全部楼层 |阅读模式
IO, pi, gp, GPIO, ST
各位:
我在NUCLEO-F411RE的板子平台上基于HAL库调试程序,想实现按键中断(PC13),但试验了多次都失败了,麻烦高手帮忙看下哪里出了问题,谢谢!代码如下:
IO初始化部分,位于main.c中
  1.   HAL_Init();
  2.   SystemClock_Config();
  3.          
  4.   __HAL_RCC_GPIOA_CLK_ENABLE();
  5.   GPIO_InitStruct.Pin = GPIO_PIN_5;
  6.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  7.   GPIO_InitStruct.Pull = GPIO_PULLUP;
  8.   GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
  9.   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  10.         __HAL_RCC_GPIOC_CLK_ENABLE();
  11.   GPIO_InitStruct.Pin = GPIO_PIN_13;
  12.   GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  13.   GPIO_InitStruct.Pull = GPIO_NOPULL;

  14.   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  15.         HAL_NVIC_SetPriority(EXTI0_IRQn, 2, 0);
  16.   HAL_NVIC_EnableIRQ(EXTI0_IRQn);
中断stm32f4xx_it.c中程序
  1. void EXTI0_IRQHandler(void)
  2. {
  3.         HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
  4. }
HAL_GPIO_EXTI_Callback函数,位于main.c中
  1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
  2. {
  3.   if(GPIO_Pin == GPIO_PIN_13)
  4.   {
  5.                
  6.   }
  7.         HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
  8.                 HAL_Delay(50);
  9. }
基于以上代码实现当PC13即按键按下,PA5即LED翻转。现在按键按下没有任何反应,请高手指点。谢谢!
附上整个工程。 GPIO.zip (3.21 MB, 下载次数: 8)



kfxy 发表于 2015-12-11 10:44 | 显示全部楼层
PC13pin对应的中断号不是EXTI0_IRQn而是EXTI15_10_IRQn

评分

参与人数 1威望 +1 收起 理由
nefusmzj + 1 很给力!

查看全部评分

 楼主| nefusmzj 发表于 2015-12-11 10:52 | 显示全部楼层
kfxy 发表于 2015-12-11 10:44
PC13pin对应的中断号不是EXTI0_IRQn而是EXTI15_10_IRQn

一语道破天机,感谢。粗心的我,竟然没发现,我还在一直纠结与EXTI0~4呢,忽略了后面的这个东西,感谢啊。 QQ截图20151211105056.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

148

帖子

2

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