用中断函数将Keil5C项目转换为C++项目错误
Transform Keil5 C Project to C++ Project Error with the Interrupt Function
在我将Project从C转换为C++之后,程序似乎被卡在了中断函数中。
我用C编写了一个keil嵌入式项目,然后我尝试用C++编写它。然后我发现程序卡在了中断函数中,即使我正确地编写了IRQHandler函数(它们在C项目中确实有效)。USART1将被卡住,同时CAN接收/传输仍在工作。
// this is the USART_IRQHandler
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
}
如果使用C++编译,中断处理程序需要C链接:
extern "C" void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
}
如果没有C链接,函数USART1_IRQHandler
将不会取代同名的默认处理程序,而是使用C链接,这是一个无休止的循环,因此它看起来">卡在中断函数中",这……只是一个不同的中断函数。
C链接防止C++"名称篡改",否则会导致符号与中断处理程序弱链接符号名称不同。
相关文章:
- 将Qt Designer项目转换为C++代码
- 将 VS 32 位项目转换为 64
- 如何使用 emscripten 将使用 zlib 的项目转换为 javascript?
- 将QMAKE项目转换为CMAKE
- 用中断函数将Keil5C项目转换为C++项目错误
- 将Qt项目转换为VC++项目 - 未解析的外部符号
- 在Visual Studio 2010中将控制台项目转换/移植到无形应用程序
- 使用ITK或OpenCV库将现有的VC++项目转换为DLL是可能的吗
- 如何将.ino Arduino项目转换为CMake
- 将 MSVS 2010 项目转换为 MSVS 2012 RC,但出现错误"The C++ standard doesn't provide a hash for this type"
- 将项目转换为 qt5 并将未定义的引用转换为 'vtable for qt5 和 cmake
- C++:使用宏字符串将项目转换为动态变量的简单方法
- 无法更新 DoDataExchange 方法:VS 2000 项目转换为 Visual Studio 2008 或 VS
- 如何将cmake项目转换为Visual Studio等效项
- 我应该将现有的 MFC 项目转换为哪个工具包
- 将 Makefile 项目转换为 Cmake
- STL错误将VS 6项目转换为VS2010
- 您能将Visual Studio 7.10项目转换为Visual Studio 2012吗
- 将Visual Basic 6项目转换为Qt/C++
- 是否有任何应用程序可以将PyQt(带有Python语法)项目转换为Qt(带有c++语法)项目