void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
#ifdef CBK_DEBUG_DEF
cm_backtrace_fault( cmb_get_lr(), cmb_get_sp());
#endif
asm(" BX lr ");//无条件转移指令,(适合裸机)//设置断点
while (1)
{
}
}
RMDK中可以使用__asm("指令")嵌入汇编语句,但是需要注意__asm("指令")、__asm{指令、指令...}这种语法是内联汇编的语法。
而RMDK下,内联汇编仅支持ARM汇编语言,不支持Thumb或者Thumb-2汇编语言;
但内嵌汇编器支持Thumb和Thumb-2指令。
所以,在不支持ARM模式下嵌入汇编时( STM32 在RMDK工具下嵌入汇编 ), 只能采用内嵌汇编的方式。举例如下:
__asm void wait()
{
nop
BX lr
}
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
wait();
while (1)
{
}
}
KEIL MDK 调试中,如果C文件有内联汇编语句,C文件中就不能设置断点。