但__volatile__不是IAR的关键字,还是有问题,索性改成这样(没加volatile会不会有副作用?):
#ifdef __IAR_SYSTEMS_ICC__ #define asmv(arg) __asm(arg) #elif #define asmv(arg) __asm__ __volatile__(arg) - #endif
(2) expected a "(" 及 expected a ")"
尽管解决了__asm__未定义问题,但还是报错了expected a "(",原因是IAR内嵌汇编与GCC不同,解决方法就是改写这些GCC内嵌汇编以符合IAR。好在需要修改的地方不多,只有3处(在msp430.c文件),我仿照《IAR C/C++ Compiler Reference Guide for Texas Instruments' MSP430 Microcontroller Family.pdf》上面的例子修改,但不行,最后我用宏替代了,另一处我直接注释掉,后续发点时间把msp430内嵌汇编了解下。