现象1:程序卡死在B. ENDP
原因:startup文件中断向量表与实际中断名不一致,厂家不同版本的startup文件和底层驱动中断函数名可能不一致。
解决方法:a.替换正确版本的startup文件
b.更改中断函数名
现象2:程序停在中断回调函数前
void ADC_IRQHandler(void)
{
Adc_IRQHandler(0);
}
原因:查看map文件,函数Adc_IRQHandler()在编译时被优化了
解决方法:keil开发:如何让所需函数不被优化?_蓁蓁啊的博客-CSDN博客_怎么让keil不优化函数
在Keil MDK中,依次选择 Option for target-Linker
在Misc controls中添加字段--keep=*Handler,编译时带Handler后缀的函数就不会被优化。