我目前正在使用预定义的cpu目标宏来使软件在多个cpu目标上运行。
#ifdef __TARGET_CPU_CORTEX_M0
[do something here]
#elif __TARGET_CPU_CORTEX_M3
[do something here]
#else
#error Unsupported compiler platform
#endif
示例:
这适用于Cortex-M0和Cortex-M3,但我无法弄清楚用于Cortex-M0 +的宏。有谁知道我可以使用哪个宏? 我使用armcc编译器。
答案 0 :(得分:3)
这是documented,虽然相当倾斜。相关宏名称源自命令行选项,因此--cpu=Cortex-M0plus
定义__TARGET_CPU_CORTEX_M0PLUS
。
令人讨厌的是,虽然它没有显示在--cpu=list
输出中,但编译器(我试过armcc版本5.04)确实也识别出选项--cpu=Cortex-M0+
,它定义了宏__TARGET_CPU_CORTEX_M0_
通常,调用armcc --cpu=xx --list_macros /dev/null
将显示为cpu选项 xx 定义了哪些宏(如果不支持,则显示错误)。