#错误场景
使用visual studio编辑器Embedded Project Wizard软件模板,在.cpp文件中调用单片机中断(eg:TIM6_IRQHandler)出现错误,无法进入中断或者代码运行挂掉。
#原因
c++编译器编译后无法连接到中断向量表,函数名称无法对应到中断服务名称。
#解决办法
增加 extern “C”,extern "C"会告诉C++编译器,将花括号中的代码按照C语言的规则进行编译与链接。如此就可以正常的链接到中断向量表,亲测成功。
代码如下:
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief This function handles TIM6 global interrupt request.
*/
void TIM6_IRQHandler(void)
{
if (TIM_GetIntStatus(TIM6, TIM_INT_UPDATE) != RESET)
{
}
}
#ifdef __cplusplus
}
#endif