1. ------对于Keil MDK Version 5 版本, 编译器已经完全支持STM32F4xx 的FPU(浮点运算单元),可以直接使用芯片内部的浮点运算单元。
2. ------对于Keil MDK Version 4 版本, 高版本v4,比如当前keil 官网可下载的v4.74.0.0 版本也已经支持FPU,可以直接使用芯片内部浮点运算。但如果使用低版本v4,如v4.23.0.0 版本, 则需要对软件进行相应
设置。
三. 如何解决问题
1. 查看手头Keil 版本是否支持FPU,最简单办法是进入Keil 调试界面直接查看0xE000ED88 地址单元数据,如果为0x00F00000, 则说明已经支持FPU,如下图所示:
2. 如果0xE000ED88地址数据为0x00000000,则需要做如下操作:
a. 在system_stm32f4xx.c文件中的systeminit()函数里面添加如下代码:
/* FPU settings------------------------------------------------------------*/
#if (__FPU_PRESENT == 1) &&(__FPU_USED == 1)
SCB->CPACR |= ((3UL << 10*2)|(3UL<< 11*2)); /* set CP10 and CP11 Full Access */
#endif
b. 在工程选项(Project->Optionsfor target "XXXX")中的C/C++选项卡的Define 中加入如下的语句,见下图所示:__FPU_PRESENT=1,__FPU_USED =1。
c. 这样编译时就加入了启动FPU 的代码,CPU 也就能正确高效的使用FPU 进行简单的加减乘除了。
3. 进一步说明使用芯片复杂数学运算使用
对于复杂运算,比如三角函数,开方等运算,需要如下设置:
a. 包含arm_math.h头文件。
b. 在工程选项的C/C++选项卡的define 中继续加入语句ARM_MATH_CM4。
c. 在工程选项的C/C++选项卡的define 中继续加入语句__CC_ARM。
以使用sin,cos 运算举例,需要调用arm_sin_f32()以及arm_cos_f32(),这两个函数定义在
arm_sin_f32.c 和arm_cos_f32.c中,需要在工程中加入这两个c 文件。
* 在 ST 库文件包中的文件目录如下:
\stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.1.0\Libraries\CMSIS\DSP_Lib\Source\FastMathFunctions
* 在keil 安装目录下的文件目录如下:
\Keil\ARM\CMSIS\DSP_Lib\Source\FastMathFunctions
当用到更多数学运算, 如开根号,三角运算,求绝对值等等,客户也可以直接在工程中加入ARM 中的数学运算库arm_cortexM4lf_math.lib,而不需要一个个文件的添加,
* 在 ST 库文件包中的目录如下:
\STM32F4xx_DSP_StdPeriph_Lib_V1.6.0\STM32F4xx_DSP_StdPeriph_Lib_V1.6.0\Libraries\CMSIS\Lib\ARM
* 在keil 安装目录下的文件目录如下:
\Keil\ARM\CMSIS\Lib\ARM
除了网上的教程外,还要特别注意,当运算中有浮点的数字时要把,数字后面加上一个f。例如表达式中有4.321参与运算。。当你不在4.321后加f时,stm32F405的片子不知道把他当做单精度float用FPU来运算,,默认可能是当做double来运算(我不确定),运算速度还是很慢。。切记所有浮点数字后面加上f,,,,有时候keil会提示warning: #1035-D: single-precision operand implicitly converted to double-precision 这句话的意思就是单精度运算隐式转换成了双精度运算了。这个时候就要在单精度数字后面加个f
keilmdk的设置中完整的define是USE_STDPERIPH_DRIVER,STM32F4XX,__FPU_PRESENT=1,__FPU_USED =1,ARM_MATH_CM4,__CC_ARM. 要在MDK中有个选项设置 usr FPU
关键字:STM32F4xx FPU DSP 注意事项
引用地址:
STM32F4xx FPU/DSP使用注意事项
推荐阅读最新更新时间:2024-03-16 16:24
数字信号处理器(DSP)在串联型电力有源滤波器
1引言 应用电力电子技术抑制谐波,以改善电能质量的新技术——电力有源滤波器(ActivePowerFilter)已成为近年来电力系统研究领域中新的热点。国际上以抑制谐波电流为目的的并联型电力有源滤波器应用居多,而随着电压敏感性负载不断增多,以电压畸变治理为主的串联型有源滤波器,正显示着越来越大的利用价值。同时,它又是进一步研究综合电能质量补偿器的前提条件,因此,对串联型有源滤波器进行研究有着重大的意义。 在串联型有源滤波器的研制过程中,我们采用了美国德州仪器公司(TI)的TMS320F240数字信号处理器(DigitalSignalProcessor),极大地方便了软硬件的开发,加快了研制的进程。 TMS320F240具有
[电源管理]
TMS320C32 DSP的中断编程方法
TMS320C3X系列芯片是美国TI公司推出的第一代浮点DSP芯片,具有丰富的指令集、很高的运算速度、较大的录址空间和较高的性价比,在各领域得到了广泛的应用。TMS320C32是TMS320系列浮点数字信号处理器的新产品,在TMS320C30和TMS320C31的基础上进行了简化和改进。在结构上的改进主要包括可变宽度的存储器接口、更快速的指令周期时间、可设置优先级的双通道DMA处理器、灵活的引导程序装入方式、可重新定位的中断向量表以及可选的边缘/电平触发中断方式等。对TMS320C32的开发可以用汇编语言,也可以用C语言。使用汇编语言的优点在于运行速度快、可以充分利用芯片的硬件特性,但开发速度较慢,程序的可读性差;而C语言的优
[嵌入式]
基于DSP的语音识别系统的实现及分析
0 引言 语音识别技术的目的是使机器能理解人类语言,最终使人机通信成为现实。在过去几十年,自动语音识别(AutomaticSpeech Recognition,ASR)技术已经取得了非常重大的进步。 ASR系统已经能从处理像数字之类的小词汇量到广播新闻之类的大词汇量。然而针对识别效果来说,ASR 系统则相对较差。尤其在会话任务上,自动语音识别系统远不及人类。因此,语音识别技术的应用已成为一个极具竞争性和挑战性的高新技术产业。 随着DSP技术的快速发展及性能不断完善,基于DSP的语音识别算法得到了实现,并且在费用、功耗、速度、精确度和体积等方面有着PC机所不具备的优势,具有广阔的应用前景。 1 系统参数选择
[嵌入式]
电信/服务器AC/DC电源设计与注意事项
使用 TI 的模拟 PFC 和 PWM 控制器以及高性能驱动器与收发器的服务器 AC/DC 电源和通信整流器的方框图 (SBD)。 方框图 设计注意事项 目前,AC/DC 电源开发者面临的挑战是实现高功率因数、低 THD 以及线路和负载条件下的高效率、高功率密度或缩小尺寸、高可靠性以及低系统成本。交错 PFC、无桥接 PFC、相移全桥 DC/DC、LLC 谐振 DC/DC 和 ZVS PWM DC/DC 等高级电源拓扑在当今的设计中广泛用于解决这些需求。大多数 AC/DC 电源使用双路 PWM 控制器、PFC 控制器和 DC/DC 控制器。但是,也有使用单路模拟控制器或组合 PFC 和 DC/DC 控制器的低功耗且低
[电源管理]
基于DSP的全桥移相控制感应加热电源研究
随着感应加热电源对自动化控制程度及可靠性要求的提高,感应加热电源正向智能化与数字化控制的方向发展。DSP具有高速的数字处理能力及丰富的外设功能,使得一些先进的控制策略能够应用实践,研究基于DSP的数字控制感应加热电源,可使产品具有更加优良的稳定性及控制的实时性,并且具有简单灵活的特点。本文以TMS320F2812为核心,设计了超音频串联谐振式感应加热电源的数字化控制系统,包括数字锁相环(DPLL)、移相PWM发生与系统闭环控制等。 1 系统结构 串联谐振式感应加热电源主电路如图1所示。采用不控整流加可控逆变电源结构,负载为感应线圈(等效为电感)与补偿电容串联。逆变部分采用带锁相环的移相PWM控制。基于TMS320F2812的系统
[电源管理]
变频器热问题的解决方法及注意事项
对变频器而言,随着温度升高,其故障率成指数上升,使用寿命成指数的下降。因此,该如何正确的处理变频器热问题呢?本文带来了变频器热问题的解决方法并讲解 变频器 散热问题的注意事项。 如何正确的处理变频器热问题?首先必须正确认识变频器工作原理和认真地考虑变频器的散热问题。
我们知道,变频器的故障率随温度升高而成指数的上升。使用寿命随温度升高而成指数的下降。环境温度升高10度,变频器使用寿命减半。因此,我们要重视散热问题啊!在变频器工作时,流过变频器的电流很大,变频器产生的热量也非常大,不能忽视其发热所产生的影响。
正确处理变频器热问题的解决方法和步骤
通常,变频器安装在控制柜中。我们要了解一台 变频器
[嵌入式]
基于DSP的弧焊逆变电源数字化控制系统
弧焊逆变电源(亦称弧焊逆变器)是一种高效、节能、轻便的新型弧焊电源。目前,采用ICBT作为功率控制器件来提高功率主电路的控制性和稳定性,以8位和16位单片机作为控制核心进行焊接程序控制和焊接参数运算处理,提高了弧焊逆变电源的操作性。数字信号处理器(DSP)的广泛普及和应用,为弧焊逆变电源控制系统的全数字化提供了必要的硬件和软件基础。 DSP与单片机性能比较分析 单片机(MCU)广泛应用于家用电器、工业控制和智能终端,主要起控制作用。DSP可高速地实现过去由软件实现的大部分算法。表1比较了典型单片机和DSP的性能指标。 由表1可知,与单片机相比,DSP的优势表现为:数据处理能力强、高运算速度、能实时
[嵌入式]
基于DSP与FPGA的运动控制器设计
运动控制技术是数控机床的关键技术,其技术水平的高低将直接影响一个国家装备制造业的发展水平。目前,多轴伺服控制器越来越多地运用在运动控制系统中,具有较高的集成度和灵活性,可实时完成运动控制过程中复杂的逻辑处理和控制算法,能实现多轴高速高精度的伺服控制。本文选用DSP与FPGA作为运动控制器的核心部件,设计了通用型运动控制器。其中DSP用于运动轨迹规划、速度控制及位置控制等功能;FPGA完成运动控制器的精插补功能,用于精确计算步进电机或伺服驱动元件的控制脉冲,同时接收并处理脉冲型位置反馈信号。本文对该运动控制器的总体结构、硬件设计和软件设计进行了描述。 1 系统总体设计 运动控制器的总体性能指标为:作为一个单独的运动控制器使用,
[工业控制]