__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");
}
但是我用的是官方的外设库,按照正常不应该会有这种问题的,请大家帮忙解释一下这是为什么,感激不尽
使用gcc 编译时才会出现这种错误,在keil中虽然会标红,但可以正常编译
解决
去掉函数名称前的__ASM
使用__ASM volatile()将汇编语句包裹起来
编译器的版本改为:5 试试
函数里面的语句你没加分号吧,应该加上吧
这个是内联汇编,有报错,可能跟编译器有关吧