使用STM32的DSP库时,遇到的一个bug

博客讲述了在使用CMSIS库时遇到的编译错误,问题在于编译器在处理core_cm4.h时没有识别到__FPU_PRESENT已被定义。解决方案是调整包含头文件的顺序,确保stm32f405xx.h在core_cm4.h之前被编译,从而正确识别FPU的存在。
摘要由CSDN通过智能技术生成

Bug提示如下

../Drivers/CMSIS/Include/core_cm4.h(81): error:  #35: #error directive: "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"

	奇怪,为什么那块代码就不应该编译,为什么会报错呢?
	而且,我明明已经定义
			#define __FPU_PRESENT             1U       /*!< FPU present

在这里插入图片描述

  进过一个晚上的,智障乱试,发现C语言编译器在编译头文件(.h)时,是按照它在C文件中出现的顺序来编译的。也就是说,它可能先编译的core_cm4.h,然后再编译stm32f405xx.h。这也就意味着,在编译core_cm4.h时,它不认为__FPU_PRESENT被宏定义了。
  解决方法很简单,把stm32f405xx.h放到arm_math.h前面(doge)。

在这里插入图片描述

STM32DSP库是用于在STM32微控制器上进行数字信号处理的库。使用DSP库可以方便地进行各种数字信号处理算法的实现,如滤波、变换、滤波器设计等。在使用DSP库之前,需要进行一些配置和设置。 首先,需要使用STM32CubeMX生成Keil5工程。在生成工程时,需要注意选择合适的库和添加预置宏。具体的步骤如下: 1. 打开STM32CubeMX,并创建一个新的工程。 2. 在配置选项中选择合适的库,并添加预置宏。 3. 生成Keil5工程。 接下来,需要打开并配置Keil 5工程。具体的步骤如下: 1. 打开Keil 5工程。 2. 将DSP库添加到工程中。如果使用的是STM32CubeMX生成的工程,可以在工程目录中找到DSP库文件,将其添加到工程中。 3. 在工程选项中进行一些配置,如选择浮点数硬件支持和定义一些宏。 4. 在需要使用DSP库的.c文件中添加头文件arm_math.h和arm_const_structs.h。 需要注意的是,在官方的HAL库中有DSP库相关的使用例程,可以参考这些例程来学习如何使用DSP库。 总结起来,使用STM32DSP库需要进行一些配置和设置,包括选择合适的库、添加预置宏、配置Keil 5工程以及在需要使用的文件中添加头文件。这样就可以方便地使用DSP库进行数字信号处理了。 #### 引用[.reference_title] - *1* [STM32DSP库简单理解和使用](https://blog.csdn.net/qq_62076047/article/details/130470951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [在STM32使用DSP库](https://blog.csdn.net/linuxweiyh/article/details/82184404)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值