概述
使用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");
}