概述
使用gcc 编译时才会出现这种错误,在keil中虽然会标红,但可以正常编译
解决
- 去掉函数名称前的__ASM
- 使用__ASM volatile()将汇编语句包裹起来
例如:
__ASM void MSR_MSP(u32 addr)
{
MSR MSP, r0 //set Main Stack value
BX r14
}
修改成下面
void MSR_MSP(u32 addr)
{
__ASM volatile("MSR MSP, r0");
__ASM volatile("BX r14");
}
或者如下
__asm void wait()
{
BX lr
}
修改成下面
void wait()
{
__ASM volatile("BX lr");
}