问题
如题,STM32配置的串口中断不能进入,DEBUG时串口中断服务函数也不能打断点
背景
配置串口函数以及串口中断服务函数是写在一个.cpp文件中
解决
在中断服务函数前面加上
extern "C"
也即:
把
void USART1_IRQHandler(void)
{
//.....
}
改为
extern "C" void USART1_IRQHandler(void)
{
//.....
}
总结
extern “C” 可以抑制C++对函数名、变量名等符号进行名称重整,因此编译出的C目标文件和C++目标文件中的变量、函数名等符号都是相同的,连接器可以可靠地对两种类型的目标文件进行链接。