趁着腰伤赋闲在家,把前几天调试STM32的几个BUG给记录一下吧。
0x01 薛定谔的启动模式
在设计FOC驱动模块的时候,我把BLDC的HALL传感器引线和STM32的TIM4 CH1~3连在一起了。本来这个事情很正常,可是问题是我用的是STM32G474CEU6这款MCU,它的TIM4有一个通道和BOOT0是复用的。这个问题本来我没在意,可是当我开始调试的时候,发现有时候复位可以正常进main,有时候却进不去,而且在调试界面看不到代码。这个时候我发现PC的值不是在0x08000000附近,而是在一个奇怪的位置——Bootloader。
仔细一想这个问题很容易解释,在还没有启动的时候,BOOT0脚并没有被我配置成TIM4的输入通道,这个时候它还是BOOT0,所以如果此时转子的位置恰好把这个脚拉到高电平了的话,就无法正常启动了。
About 4 min