@
wutiantong @
shylockhg 感谢热心帮助,,问题解决了
cmsis_gcc.h 中__enable_irq()的定义如下:
__attribute__( ( always_inline ) ) static inline void __enable_irq(void)
{
__ASM volatile ("cpsie i" : : : "memory");
}
我用 gcc -E 生成了.c 文件的预处理文件,,在预处理文件中__enalbe_irq()的定义变成了
# 58 "../../lib/cmsis/inc/cmsis_gcc.h"
__attribute__( ( always_inline ) ) static void __enable_irq(void)
{
__asm volatile ("cpsie i" : : : "memory");
}
原来的“ static inline ”变成了“ static ”,,inline 没了,,
我就想可能代码某处把 inline 给宏定义了,,所以搜索了下,,果然,在 portmacro.h 中有一行:
#define inline
把这行注释掉问题就解决了
这个文件是厂家的 SDK 里面的,,不知道为什么要这么定义,,