前言

Cortex-M4支持硬件浮点运算单元(有些厂商直接说成DSP模块),本节将给大家介绍STM32F407芯片中硬件浮点运算单元中的使用及带来的性能对比。

示例详解

基于硬件平台: 正点源子的stm32f4 探索者开发板,MCU 的型号是 STM32F4ZET6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。本示例所用的开发板及部分原理图:

  1. 关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:
  1. 系统时钟树

  1. 串口配置(用于程序调试)

  1. RCC配置

  1. SYS配置

  1. 引脚配置,用到引脚极少

  1. 堆栈配置(也可保持默认):

  1. 工程代码

    1. 在main.c 中main函数中 USER CODE 1、USER CODE 2以及 main.c中的 USER CODE 4 区域加入如下图所示代码:

c) 编译工程,调试程序, (注:在使用探索者F4调试时,下载或仿真调试时先不要PC串口工具连接上开发板的USB_232接口,有可能导致程序运行不了--boot0引脚电平不对,可以先跑起来再在PC串口工具上连接相应端口!!,可按下面的具体操作步骤来操作—>>  )。

在KEIL mdk v5中对stm32f407的硬件浮点单元默认是开启的(选择是单精度模式—Single Precision )如下图:

程序跳转到main函数开始位置:

打开串口工具,并打开相应串口:

串口已打开,程序全速运行(F5或单击全速运行图标)相看运行结果:

接下来我们不使用硬件浮点运算单元,如下图选择不使用,

编译,如果出现如下类似错误:

只需在float 变量初始化值后加上f后辍即可:

成功编译通过后按上面的步骤再来运行一次程序,这个时候可以在串口中看到如下程序运行结果—不使用硬件浮点运算单元,浮点数的运算时间明显加长:

到此本节课就算完成了,相信大家对Cortex-M4的硬件浮点运算单元也会有更加深的了解与认识。

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

文中源码资料下载,在公众号里给十三发消息:

下载|STM32进阶教程12

关注十三公众号

STM32 进阶教程 12 - M4的硬件乘法器使用相关推荐

  1. STM32 进阶教程 9 - 芯片维一码(UID)读取

    前言 在嵌入式设备开发过程中有时会需要为设备设置唯一的ID用以标识设备唯一,比如要求同一总线上的所有设备ID不能重复,要求设备具体唯一的MAC地址等等.其实STM32的及其它类型的MCU如ATMEL, ...

  2. STM32 电机教程 12 - BLDC 闭环电流控制

    前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器.汽车.航空航天.消费品.医疗.工业自动化设备和仪器等行业中使用.正如名称 ...

  3. STM32 进阶教程 20 - 串口+DMA实现OneWire总线

    前言 One-wire总线使用一根并联总线完成对于多个设备的访问,通过上拉的OD门实现多设备的读写操作,通过ID区别设备,通过CRC5完成数据校验.常见对于one-wire总线的操作代码主要使用包含基 ...

  4. STM32 进阶教程 19 - IQmath数学库的使用

    前言 STM32 M3 系列是不带浮点运算单元的,小数运算都是采用定点转浮点试式实现的,本节给大家介绍一个很好用的定点转浮点数学运算库,IQmath是德州仪器 (TI) 的一个高度优化的高精度数学函数 ...

  5. STM32 进阶教程 18 – ADC间断模式

    前言 STM32 的ADC拥有连续扫描模式,也有间断模式,间断模式较扫描模式需要更多的触发事件才能完成所有的通道转换操作,在实际工程应用中,可以利用间断模式实现一些特殊应用.关于间断模式,在STM32 ...

  6. STM32 进阶教程 17 - ADC注入通道

    前言 STM32 的ADC的一个强大功能是支持触发注入功能,在103中每个ADC模块支持4个注入通道,每个注入通道具有独立的结果突存器,注入通道具有较规划通道更高的优先级,在实际工程应用中,注入通道更 ...

  7. STM32 进阶教程 16 - ADC1与ADC2同步采样

    前言 STM32中在有2个或以上ADC模块的产品中,可以使用双ADC模式.在双ADC模式里,根据ADC1_CR1寄存器中DUALMOD[2:0]位所选的模式,转换的启动可以是ADC1主和ADC2从的交 ...

  8. STM32 进阶教程 15 - 串口DMA收发

    前言 串口操作相信大家一定很熟悉,如果你已经会串口的收发数据,并可以灵活使用轮询及中断方式对串口进行数据收发,那么恭喜你,学完本节内容后,也将可以学会串口的更高级操作方式,DMA方式,DMA操作串口可 ...

  9. STM32 进阶教程 14 - 程序加密之FLASH读写保护

    前言 在嵌入式应用开发中,应用开发完成后往往需要对芯片中的程序进行加密处理,用以保护程序安全(不至被竞争对手从芯片把程序固件考走),本节将给大学介绍一个如何实现程序自动给芯片加密功能.学完本节内容,你 ...

最新文章

  1. 区块链+5G=智慧城市?
  2. moss得log文件不断增长的解决办法
  3. 十六届全国大学生智能车竞赛线上比赛的队伍看过来,你们需要的图片都在这儿
  4. vue 自定义select下拉框样式(div模拟)
  5. 微服务配置中心是干啥的_微服务入门到精通-分布式配置中心(续)
  6. CImage与OpenCV兼容问题
  7. QAction添加事件响应
  8. Django的第一步(第一节)
  9. js reduce数组循环相加x+y
  10. php验证卡号,PHP验证信用卡卡号是否正确函数
  11. 华为举办HDC.Cloud媒体预沟通会,为开发者提供ICT“黑土地”
  12. Nginx惊群问题分析及解决
  13. Android 中WebView的使用详解
  14. stm32Cubemx(8):RTC和RTC唤醒中断
  15. QT框架下的OpenGL使用---实战篇---鼠标选取点对象
  16. 理解和解决requireJS的报错:MODULE NAME HAS NOT BEEN LOADED YET FOR CONTEXT
  17. matlab 变量的定义变量名称,matlab定义变量名
  18. 苹果不更新APP动态更换节假日Logo
  19. ToDoListEditor 任务清单工具
  20. CSDN原力计划之技术影响力企业博客英雄榜 TOP 50 发布!

热门文章

  1. Python——接口开发
  2. 我是如何在webpack中使用postcss-px2rem的
  3. makefile笔记
  4. 面试题----几种数组去重方式
  5. MaxScript Slider/Timer
  6. 给Repeater、Datalist和Datagrid增加自动编号列
  7. WPF基础入门 - 1
  8. GIS叠加分析功能学习
  9. 超图桌面版打开外部矢量文件
  10. 微软Kinect 1.7 附带ColorBasics-D2D示例程序基本解析