使用CubeMX生成的项目在Keil下添加DSP库并包含arm_math头文件后报错的解决办法

在使用CubeMX生成的STM32工程中,添加CMSIS DSP库后编译出现错误。错误原因可能是CubeMX复制的库与Keil引用的库冲突。解决方案是将工程目录下的DriversCMSISDSPInclude目录添加到工程中,避免库冲突。此外,新版CMSIS库可能需要定义__TARGET_FPU_VFP=1和ARM_MATH_CM4等宏来启用FPU。
摘要由CSDN通过智能技术生成

问题描述: 最近使用Cube生成工程后,在Keil中使用Manage Runtime Environment即绿色小饼干按钮添加CMSIS的DSP库后编译报错。很有意思的是,STM32论坛上有外国朋友报告的同样的错误,都是30个Errors,5个Warning。
问题截图
问题分析: 参考帖子:

http://www.openedv.com/forum.php?mod=viewthread&tid=78999&page=1

认为是Cube复制了库后,Keil从原始Packs目录下引用DSP库导致和Cube的库冲突的原因。

解决方法:
有一种非常简单的解决办法就是使用V6版本的编译器,但是发现使用某些框架会编译出错,因此不建议用这个办法。

比较好的解决办法是把工程目录下的Drivers\CMSIS\DSP\Include目录包含进工程,如图所示
解决办法
再次编译就不会出错了
编译成功
多说一句,似乎新版的CMSIS库中需要使用__TARGET_FPU_VFP=1宏来使能FPU(实际上是启用__FPU_USED宏,同时不需要手动定义__FPU_PRESENT),同时需要添加ARM_MATH_CM4等Cortex系列定义。定义后再编译,可以在system_stm32f4xx.c中的SystemInit()函数中看到FPU使能命令:
使能FPU

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值