00. 目录
01. 问题描述
当编译的时候出现error: non-ASM statement in naked function is not supported错误
Build started: Project: Template
*** Using Compiler 'V6.14', folder: 'D:\Keil_v5\ARM\ARMCLANG\Bin'
Build target 'Template'
../CORE/core_cm3.c(445): error: non-ASM statement in naked function is not supported
uint32_t result=0;
^
../CORE/core_cm3.c(442): note: attribute is here
uint32_t __get_PSP(void) __attribute__( ( naked ) );
^
../CORE/core_cm3.c(465): error: parameter references not allowed in naked functions
"BX lr \n\t" : : "r" (topOfProcStack) );
^
../CORE/core_cm3.c(461): note: attribute is here
void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) );
^
../CORE/core_cm3.c(479): error: non-ASM statement in naked function is not supported
uint32_t result=0;
^
../CORE/core_cm3.c(476): note: attribute is here
uint32_t __get_MSP(void) __attribute__( ( naked ) );
^
../CORE/core_cm3.c(499): error: parameter references not allowed in naked functions
"BX lr \n\t" : : "r" (topOfMainStack) );
^
../CORE/core_cm3.c(495): note: attribute is here
void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) );
^
../CORE/core_cm3.c(509): warning: no previous prototype for function '__get_BASEPRI' [-Wmissing-prototypes]
uint32_t __get_BASEPRI(void)
^
02. 问题分析
KEIL5版本更新了的缘故,使用了keil5默认的版本6的编译器,而固件库还是支持版本5的编译器。
03. 问题解决
将Keil5版本中的编译器设置为支持版本5的编译器即可。
04. 结果验证
再次编译,就编译OK了
Build started: Project: Template
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Keil_v5\ARM\ARMCC\Bin'
Build target 'Template'
compiling main.c...
linking...
Program Size: Code=1132 RO-data=252 RW-data=0 ZI-data=1632
"..\OBJ\Template.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:01