打印
[STM32F4]

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

[复制链接]
1030|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nefusmzj|  楼主 | 2015-12-11 09:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
IO, pi, gp, GPIO, ST
各位:
我在NUCLEO-F411RE的板子平台上基于HAL库调试程序,想实现按键中断(PC13),但试验了多次都失败了,麻烦高手帮忙看下哪里出了问题,谢谢!代码如下:
IO初始化部分,位于main.c中
  HAL_Init();
  SystemClock_Config();
         
  __HAL_RCC_GPIOA_CLK_ENABLE();
  GPIO_InitStruct.Pin = GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

        __HAL_RCC_GPIOC_CLK_ENABLE();
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;

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



沙发
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呢,忽略了后面的这个东西,感谢啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

148

帖子

2

粉丝