|
STM32F3xx/STM32F4xx使用浮点开方指令 前言 STM32F3xx/STM32F4xx(ARM Cortex-M4内核)中集成了FPU,也就是浮点指令单元,可以将浮点运算变得简单快速,但如果想要发挥出这个浮点运算的最大功效,必须使用浮点指令集,开发者可以直接使用浮点指令集,但目前随着系统的集成度更大,开发者还是希望使用C语言进行编程,还要求执行时间短,当调用DSP_Lib库函数方式,时会有执行时间长的问题,本文以浮点开方为例对此类需求做相关说明。 Cortex-M4内核浮点指令集 数**算浮点指令
转移,调用,比较浮点指令
Keil编译器的浮点开方使用 1) 编译器设定 首先选择单精度浮点硬件单元
在Define部分增加ARM_MATH_CM4,__FPU_PRESENT=1,__FPU_USED =1的定义
2) 加入包含文件#include "math.h"
3) 加入测试代码 直接调用内联函数__sqrtf()
汇编代码如下, 可以直观看到VSQRT.F32这条直接使用浮点开方运算的指令
IAR编译器的浮点开方使用 1) 编译器设定 选择单精度浮点硬件单元
2) 加入包含文件#include "math.h"
3) 加入测试代码 需要调用sqrtf这个函数
汇编代码如下,可以看到VSQRT.F32这条直接使用浮点开方运算的指令
值得说明的是IAR浮点开方调用普通函数库sqrtf,这个函数库中做了数据大于0的判断, 从软件角度上更安全, 但时间会长; 而Keil的函数__sqrtf()实际上是类似inline function的属性,并没有函数调用和返回的指令,更为简单,执行时间短。 文档下载地址: https://www.stmcu.org.cn/document/list/index/category-1017 实战经验汇总: https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html |
| 内联函数__sqrtf() 在哪里找的?不熟悉的人根本不知道这个, 还有这个跟调用dsp库的开放有区别吗 |
| 谢楼主分享 |
| 感谢楼主的分享 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版