使用cubemx+keil环境下的arm_math配置
摘要:在STM32开发中,使用CubeMX配置DSP库时需勾选"Copy all used libraries"选项以确保CMSIS文件夹包含数学文件。Keil端配置需添加相应宏定义(如FPU_PRESENT=1、ARM_MATH_CM7等)并设置DSP库路径(Drivers\CMSIS\DSP\Include)。根据芯片内核选择正确的库文件(如M7内核使用arm_cortex
·
cubemx端配置

点击software packs
点击select components


下载并勾选DSP library,重写生成代码
注意,生成代码必须勾选“Copy all used libraries into the project folder”,否则无法早CMSIS文件夹中找到对应的math文件。

生成代码后,转到keil端,我们配置相关宏定义和路径。
keil端配置
step1 添加宏
点击魔术棒,添加宏

| ,FPU_PRESENT=1,FPU_USED=1,ARM_MATH_CM7 |
|---|
注意,这里因为是h7系列芯片,为m7内核故使用“ARM_MATH_CM7”,如果是f1则用“ARM_MATH_CM3”,如果是f4则用“ARM_MATH_CM4”.
如上,点击“ok”保存。
step2 添加路径
点击魔术棒,配置路径

地址参考路径如下:
| 工程\Drivers\CMSIS\DSP\Include |
|---|
注意,如果生成代码时未勾选“Copy all used libraries into the project folder”,则无法找到对应路径。
step3 添加库文件
库文件路径如下
| 工程\Drivers\CMSIS\DSP\Lib\ARM |
|---|
将需要文件添加到keil工程目录下。类似如下:

这里我们使用的是h750,所以选择m7内核文件。
后缀定义如下
‘b’表示大端格式(Big Endian),‘l’表示小端格式(Little Endian),‘f’表示带浮点数等等,具体列表如下:
| 字母 | 含义(英文) | 含义(中文) | 参数类别 |
|---|---|---|---|
l |
Little-endian | 小端字节序 | 字节序(Endian) |
b |
Big-endian | 大端字节序(极少用) | 字节序 |
f |
Floating Point (float) | 单精度浮点(float) |
浮点支持 |
d |
Double-precision float | 双精度浮点(double) |
浮点支持 |
s |
Soft ABI | 使用软浮点 ABI(浮点数用整数寄存器传参) | ABI 类型 |
p |
Preserve FP registers (Hard ABI) | 使用硬浮点 ABI(浮点寄存器传参,保留 FP 寄存器) | ABI 类型 |
组合示例:
| 后缀 | 拆解 | 含义说明 |
|---|---|---|
l |
l |
小端,无浮点,常用于 M0/M3 等 |
lf |
l + f |
小端 + 单精度浮点,未指明 ABI |
lfsp |
l + f + s + p |
小端 + 单精度浮点 + Soft ABI + 保留 FP 寄存器 |
lfhp |
l + f + h + p(实为 p) |
小端 + 单精度浮点 + 硬浮点 ABI(Hard ABI) |
lfdp |
l + f + d + p |
小端 + 双精度浮点 + 硬浮点 ABI |
bfs |
b + f + s |
大端 + 单精度浮点 + Soft ABI(极罕见) |
重新编译,0 error,编译通过。
更多推荐



所有评论(0)