[STM32F4] STM32F407的PH10无法响应外部中断的解决方法

[复制链接]
1257|1
 楼主| t60yz 发表于 2023-5-28 01:25 | 显示全部楼层 |阅读模式
问题:
STM32F407IG的PH10引脚配置为外部中断输入时,无法正常触发中断,相邻的PH11 PH12正常。

解决办法:
向SYSCFG_EXTICR1寄存器的EXTI2[3:0] 和 SYSCFG_EXTICR3寄存器的EXTI10[3:0] 写入 二进制0b0111即可。(官方手册标错了,应该是0b0111才对)
具体代码如下
  1. /**
  2.   * [url=home.php?mod=space&uid=247401]@brief[/url]  配置 PH10 为外部中断,并设置中断优先级
  3.   * @param  无
  4.   * @retval 无
  5.   */
  6. void EXTI_Key_Config(void)
  7. {
  8.     GPIO_InitTypeDef GPIO_InitStructure;

  9.     __HAL_RCC_GPIOH_CLK_ENABLE();

  10.     /* PH10 */
  11.     GPIO_InitStructure.Pin = GPIO_PIN_10;
  12.     GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
  13.     GPIO_InitStructure.Pull = GPIO_PULLUP;
  14.     HAL_GPIO_Init(GPIOH, &GPIO_InitStructure);
  15.     HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
  16.     HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

  17.     /*
  18.      * 由于芯片内部缺陷,PH10和PH2的外部中断源必须同时打开,否则无法正常使用,
  19.      * 打开(PH10/PH2)的外部中断源后,(PI10/PI2)的外部中断源无法使用,
  20.      * (PH10/PH2)和(PI10/PI2)只能二选一
  21.      */
  22.     SYSCFG->EXTICR[0] |= 0x07 << 8;
  23.     SYSCFG->EXTICR[2] |= 0x07 << 8;
  24. }

————————————————
版权声明:本文为CSDN博主「ZZZ_XXJ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zzz_xxj/article/details/122001648

 楼主| t60yz 发表于 2023-5-28 01:26 | 显示全部楼层
局限性:
此方**导致PI10和PI2无法响应外部中断,具体如下:
1796964723d380f56e.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

189

主题

1191

帖子

0

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