FPU硬件浮点单元
时间:10-02
整理:3721RD
点击:
1. 打开 option for target 选择 Target 标签,在code generatio中,将floating point hardware 选择 为 Use Single Precision ( 或 Use double Precision 精度的选择,库文件也不同)
2. 打开 option for target 选择 C/C++ 标签, 在define中添加:
__CC_ARM, //代表MDK开发环境
__TARGET_FPU_VFP, //可以不写,步骤1中会生成,这里为保证写一下
__FPU_PRESENT=1, // 用来确定处理器是否带 FPU 功能,在stm32f767xx.h也有定义,但是一定要在调用arm_math.h前调用stm32f767xx.h(注意不是 stm32f7xx.h 文件是和你的芯片型号对应的头文件),这头文件,不然会报错,还是调加
//__FPU_USED=1,// 用来确定是否开启FPU的功能,这个可以不写在core_cm7.h会重义
ARM_MATH_CM7,//这个就非常重要,必须要配置进去,否则在编译之后,会默认使用math.h的库函数,而不会用到硬件的FPU的
ARM_MATH_MATRIX_CHECK,//是库函数的参数检查开关,这里添加后,就打开
ARM_MATH_ROUNDING,//这个是库函数在运算是是否开启四舍五入的功能,我这里添加,可以根据自己的需要进行配置
3. 添加浮点库文件到工程。
如果用的是 uv4,打开 C:\Keil\ARM\CMSIS\Lib\ARM 目录,复制“arm_cortexM7lfsp_math.lib”文件到你的工程下,并加入工程。
如果用的是 uv5,打开 C:\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS\Lib\ARM 目录,复制“arm_cortexM7lfsp_math.lib”文件到你的工程下,并加入工程。
再或者在官方下载固件库程序包中复制也行, \STM32Cube\Repository\STM32Cube_FW_F7_V1.7.0\Drivers\CMSIS\Lib\ARM
这是添加lib库文件,也可以添加源码库文件, \STM32Cube\Repository\STM32Cube_FW_F7_V1.7.0\Drivers\CMSIS\DSP_Lib\Source
lib文件,不参与编译,只参与链接定位,所以编译速度快,但是有点占空间。根据自己的情况而定。
在\STM32Cube\Repository\STM32Cube_FW_F7_V1.7.0\Drivers\CMSIS\Documentation
有相关的说明文档
如果 使用Use double Precision 库文件为arm_cortexM7lfdp_math.lib
具体意义如下
4、如果想用浮点库就使用头文件 arm_math.h 代替math.h
2. 打开 option for target 选择 C/C++ 标签, 在define中添加:
__CC_ARM, //代表MDK开发环境
__TARGET_FPU_VFP, //可以不写,步骤1中会生成,这里为保证写一下
__FPU_PRESENT=1, // 用来确定处理器是否带 FPU 功能,在stm32f767xx.h也有定义,但是一定要在调用arm_math.h前调用stm32f767xx.h(注意不是 stm32f7xx.h 文件是和你的芯片型号对应的头文件),这头文件,不然会报错,还是调加
//__FPU_USED=1,// 用来确定是否开启FPU的功能,这个可以不写在core_cm7.h会重义
ARM_MATH_CM7,//这个就非常重要,必须要配置进去,否则在编译之后,会默认使用math.h的库函数,而不会用到硬件的FPU的
ARM_MATH_MATRIX_CHECK,//是库函数的参数检查开关,这里添加后,就打开
ARM_MATH_ROUNDING,//这个是库函数在运算是是否开启四舍五入的功能,我这里添加,可以根据自己的需要进行配置
3. 添加浮点库文件到工程。
如果用的是 uv4,打开 C:\Keil\ARM\CMSIS\Lib\ARM 目录,复制“arm_cortexM7lfsp_math.lib”文件到你的工程下,并加入工程。
如果用的是 uv5,打开 C:\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS\Lib\ARM 目录,复制“arm_cortexM7lfsp_math.lib”文件到你的工程下,并加入工程。
再或者在官方下载固件库程序包中复制也行, \STM32Cube\Repository\STM32Cube_FW_F7_V1.7.0\Drivers\CMSIS\Lib\ARM
这是添加lib库文件,也可以添加源码库文件, \STM32Cube\Repository\STM32Cube_FW_F7_V1.7.0\Drivers\CMSIS\DSP_Lib\Source
lib文件,不参与编译,只参与链接定位,所以编译速度快,但是有点占空间。根据自己的情况而定。
在\STM32Cube\Repository\STM32Cube_FW_F7_V1.7.0\Drivers\CMSIS\Documentation
有相关的说明文档
如果 使用Use double Precision 库文件为arm_cortexM7lfdp_math.lib
具体意义如下
- arm_cortexM7lfdp_math.lib (Little endian and Double Precision Floating Point Unit on Cortex-M7)
- arm_cortexM7bfdp_math.lib (Big endian and Double Precision Floating Point Unit on Cortex-M7)
- arm_cortexM7lfsp_math.lib (Little endian and Single Precision Floating Point Unit on Cortex-M7)
- arm_cortexM7bfsp_math.lib (Big endian and Single Precision Floating Point Unit on Cortex-M7)
- arm_cortexM7l_math.lib (Little endian on Cortex-M7)
- arm_cortexM7b_math.lib (Big endian on Cortex-M7)
4、如果想用浮点库就使用头文件 arm_math.h 代替math.h