STM32G431启用FPU与DSP库
1.FPU与DSP
- STM32的FPU是芯片内部的硬件浮点运算单元,能高速处理所有浮点计算;而DSP库则是建立在FPU等硬件特性之上的软件函数库,它提供了一系列经过极致优化的数字信号处理算法(如FFT、滤波等)。两者关系可概括为:FPU是强大的硬件基础,负责通用浮点加速;DSP库则是专业的软件加速包,针对复杂算法进行特定优化。在实际应用中,应先启用FPU获得基础性能提升,再调用DSP库来处理专门的复杂运算任务。
- 下面我们通过STM32CUBEMX + cmake + vscode 来创建一个完整地项目
2.工程创建
2.1新建STMG431CBT6的工程

- 选择外部高速时钟

- 开启SWD,就是允许我们使用ST-link进行下载调试,时钟来源选择系统时钟

- 因为我们要用到串口打印相关信息,开启串口2

- 配置时钟,按照自己的晶振频率设置

- 配置相关项目相关信息
项目名称,开发工具,固件版本
生成源文件和头文件 ,生成项目
2.2用VSCODE打开并编译看是否成功
导入Cmake项目,选择刚生成的文件打开,直接导入即可
点击编译,输出如下信息显示成功
2.3开启FPU并且添加DSP库
- 回到CUBEMX

- 找到DSP库,并且勾选上,可能下载会比较慢

返回,并且勾选上添加DSP库,生成代码
返回Vscode看到有如下文件则添加成功
接下来在CMake文件中如下位置添加两行代码
1 | ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/CMSIS/DSP/Lib/GCC/libarm_cortexM4lf_math.a |

到此,工程创建成功
3.测试工程
为了方便输出信息,我们将串口重定向,在usart.c文件中添加如下代码
1 | #ifdef __GNUC__ |
- ==注意要在gcc-arm-none-eabi.cmake文件如下位置加入-u_printf_float==

测试代码,注意需要包含stdio头文件
该插件的下载按钮如下
==注意,必须加“\n”,不然会有莫名的问题
1 | printf("hello\n"); |
调试信息如下:
成功==