1使用环境
使用的硬件环境是蓝桥杯嵌入式的开发板,STM32G431RBTx处理器。
STM32 CubeMx使用的是STM32Cube FW_G4 V1.2.0的固件包。当我使用1.4的固件包时同样的配置没遇到卡死的问题。
2问题分析
遇到卡死的时候,我一般是先在线调试看卡死在哪里了,发现卡死在B .处,这一般是使能了中断但是程序在产生中断时没有找到中断服务函数造成的。
由于我只使用了定时器7的更新中断,因此直接找到STM32 CubeMx生成的中断服务函数处,通过对比下面两个文件发现中断服务函数名字不一样。
分别是:
EXPORT TIM7_DAC_IRQHandler [WEAK]
void TIM7_IRQHandler(void)
在通过搜索发现TIM7_DAC_IRQHandler是被重新定义成了TIM7_IRQHandler。
于是抱着试一试的心态我把下面重定义函数名这注释掉,并把所有TIM7_IRQHandler的地方全部改成TIM7_DAC_IRQHandler问题解决了。
但是为什么我还不清楚,按道理说用#define应该是可以将TIM7_DAC_IRQHandler和TIM7_IRQHandler等同起来的。