你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F401 Nucleo 开发板不能进入GPIO EXTI按键中断

[复制链接]
xujiantj 提问时间:2018-12-28 10:25 /
阅读主题, 点击返回1楼
收藏 评论13 发布时间:2018-12-28 10:25
13个回答
xujiantj 回答时间:2018-12-29 16:46:03
wenyangzeng 发表于 2018-12-29 16:35
那个PC13应该设置上拉才对。
进入的那个状态是硬件出错中断。还有那个stm32f4xx.it.c关于外部中断的代码应 ...

PC13设置成上拉之前试过,也不行。硬件PC13外部有10K电阻的上拉,设置成浮空输入应该也行。
xujiantj 回答时间:2018-12-29 16:52:04
xujiantj 发表于 2018-12-29 16:46
PC13设置成上拉之前试过,也不行。硬件PC13外部有10K电阻的上拉,设置成浮空输入应该也行。 ...

我再看看stm32f4xx.it.c文件中的中断部分的代码,非常感谢!!!
xujiantj 回答时间:2019-1-2 09:57:10
问题解决了!感谢楼上的大哥,是stm32f4xx.it.c中之前例程中给的是外部中断0的服务函数 EXTI0_IRQHandler(),因为外部中断改成PC13了,需要改成 EXTI15_10_IRQHandler()。添加如下代码就可以了。
void EXTI15_10_IRQHandler(void)
{
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
}

非常感谢!!!
xujiantj 回答时间:2019-1-2 10:21:36
wenyangzeng 发表于 2018-12-29 16:35
那个PC13应该设置上拉才对。  GPIO_InitStruct.Pull = GPIO_PULLUP;

进入的那个状态是硬件出错中断。还有 ...

非常感谢楼上大哥,问题已解决!!!
就是例程的stm32f4xx.it.c中原先的中断服务函数是:
void EXTI0_IRQHandler(void)
{
  HAL_GPIO_EXTI_IRQHandler(KEY_BUTTON_PIN);
}
需要改为:
void EXTI15_10_IRQHandler(void)
{
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
}
就可以了!!!
非常感谢!!!
12
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版