如何为Keil安装version 5版本的ARM Compiler(CMSIS/core_cm3.c(445): error: non-ASM statement in naked function)

本篇博客解决两个问题,一个是编译报错CMSIS/core_cm3.c(445): error: non-ASM statement in naked function 以及keil ->target 显示 miss complier version 5 .

说明:报错CMSIS/core_cm3.c(445): error: non-ASM statement in naked function is not sup。的原因是因为你用st固件库方式编程,st固件库太老了,它是compiler version 5相对应下的。而keil V5.37以上不会默认把compiler version 5装上(只有compiler version 6).

所以两个办法,

法一:继续用compiler version 6,找到错误根源core_cm3.c文件,并删除。原因在以下两个博客中有比较详细的说明。

MDK-ARM编译器V6和V5_keil arm 6.21编译器与5的区别-CSDN博客
固件库编程:关于core_cm3.c的错误_error: non-asm statement in naked function is not -CSDN博客

大概意思就是说core_cmFunc.h与core_cm3.c有函数重复定义了,删掉core_cm3.c即可。

值得指出的是,自己开发当然用新版compiler好,但当你打开其他工程师写的旧工程时还是得加入compiler version 5.

法二,加入compiler version 5 。大概流程为下载keilV5.36复制ARMCC文件至最新keil ->ARM目录下,再在keil配置加入即可。具体流程下面这篇文章写的很详细,就不赘述了。(该文包含ARMCC文件压缩包,省去安装旧版keil麻烦。)

https://zhuanlan.zhihu.com/p/561047339

Build started: Project: project *** Using Compiler 'V6.23', folder: 'D:\Keil_v5\ARM\ARMCLANG\Bin' Build target 'Target_1' Note: source file '.\Start\startup_stm32f10x_md.s' - object file renamed from '.\Objects\startup_stm32f10x_md.o' to '.\Objects\startup_stm32f10x_md_1.o'. Note: source file '.\Start\startup_stm32f10x_md.s' - object file renamed from '.\Objects\startup_stm32f10x_md.o' to '.\Objects\startup_stm32f10x_md_1.o'. Note: source file '.\Start\core_cm3.c' - object file renamed from '.\Objects\core_cm3.o' to '.\Objects\core_cm3_1.o'. Note: source file '.\Start\startup_stm32f10x_md.s' - object file renamed from '.\Objects\startup_stm32f10x_md.o' to '.\Objects\startup_stm32f10x_md_2.o'. Note: source file '.\Start\startup_stm32f10x_md.s' - object file renamed from '.\Objects\startup_stm32f10x_md.o' to '.\Objects\startup_stm32f10x_md_2.o'. Note: source file '.\Start\system_stm32f10x.c' - object file renamed from '.\Objects\system_stm32f10x.o' to '.\Objects\system_stm32f10x_1.o'. Start/core_cm3.c(445): error: non-ASM statement in naked function is not supported 445 | uint32_t result=0; | ^ Start/core_cm3.c(442): note: attribute is here 442 | uint32_t __get_PSP(void) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(465): error: parameter references not allowed in naked functions 465 | "BX lr \n\t" : : "r" (topOfProcStack) ); | ^ Start/core_cm3.c(461): note: attribute is here 461 | void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(479): error: non-ASM statement in naked function is not supported 479 | uint32_t result=0; | ^ Start/core_cm3.c(476): note: attribute is here 476 | uint32_t __get_MSP(void) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(499): error: parameter references not allowed in naked functions 499 | "BX lr \n\t" : : "r" (topOfMainStack) ); | ^ Start/core_cm3.c(495): note: attribute is here 495 | void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); | ^ 4 errors generated. compiling core_cm3.c... Start/core_cm3.c(445): error: non-ASM statement in naked function is not supported 445 | uint32_t result=0; | ^ Start/core_cm3.c(442): note: attribute is here 442 | uint32_t __get_PSP(void) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(465): error: parameter references not allowed in naked functions 465 | "BX lr \n\t" : : "r" (topOfProcStack) ); | ^ Start/core_cm3.c(461): note: attribute is here 461 | void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(479): error: non-ASM statement in naked function is not supported 479 | uint32_t result=0; | ^ Start/core_cm3.c(476): note: attribute is here 476 | uint32_t __get_MSP(void) __attribute__( ( naked ) ); | ^ Start/core_cm3.c(499): error: parameter references not allowed in naked functions 499 | "BX lr \n\t" : : "r" (topOfMainStack) ); | ^ Start/core_cm3.c(495): note: attribute is here 495 | void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); | ^ 4 errors generated. compiling core_cm3.c... compiling main.c...
07-17
Build started: Project: project *** Using Compiler 'V6.21', folder: 'E:\keil539\ARM\ARMCLANG\Bin' Build target 'Target 1' compiling stm32f10x_rtc.c... compiling stm32f10x_dma.c... compiling stm32f10x_rcc.c... compiling stm32f10x_adc.c... compiling stm32f10x_crc.c... start/core_cm3.c(445): error: non-ASM statement in naked function is not supported 445 | uint32_t result=0; | ^ start/core_cm3.c(442): note: attribute is here 442 | uint32_t __get_PSP(void) __attribute__( ( naked ) ); | ^ start/core_cm3.c(465): error: parameter references not allowed in naked functions 465 | "BX lr \n\t" : : "r" (topOfProcStack) ); | ^ start/core_cm3.c(461): note: attribute is here 461 | void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); | ^ start/core_cm3.c(479): error: non-ASM statement in naked function is not supported 479 | uint32_t result=0; | ^ start/core_cm3.c(476): note: attribute is here 476 | uint32_t __get_MSP(void) __attribute__( ( naked ) ); | ^ start/core_cm3.c(499): error: parameter references not allowed in naked functions 499 | "BX lr \n\t" : : "r" (topOfMainStack) ); | ^ start/core_cm3.c(495): note: attribute is here 495 | void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); | ^ 4 errors generated. compiling core_cm3.c... compiling stm32f10x_i2c.c... compiling stm32f10x_dac.c... compiling stm32f10x_cec.c... compiling stm32f10x_pwr.c... compiling stm32f10x_bkp.c... compiling stm32f10x_it.c... compiling stm32f10x_spi.c... compiling stm32f10x_can.c... compiling stm32f10x_tim.c... ".\Objects\project.axf" - 4 Error(s), 0 Warning(s). Target not
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值