打印
[STM32F4]

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

[复制链接]
222|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2023-5-28 01:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
问题:
STM32F407IG的PH10引脚配置为外部中断输入时,无法正常触发中断,相邻的PH11 PH12正常。

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

    __HAL_RCC_GPIOH_CLK_ENABLE();

    /* PH10 */
    GPIO_InitStructure.Pin = GPIO_PIN_10;
    GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
    GPIO_InitStructure.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(GPIOH, &GPIO_InitStructure);
    HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

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

————————————————
版权声明:本文为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无法响应外部中断,具体如下:

使用特权

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

本版积分规则

99

主题

838

帖子

0

粉丝