问题:
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
|