ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:254.08KB ,
资源ID:3600967      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3600967.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32F4 的FPU 的配置.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STM32F4 的FPU 的配置.docx

1、STM32F4 的FPU 的配置STM32F4 的FPU 的配置编译环境为EWARM-6601首先看下面一段代码:来自core_cm4.h文件/*! _FPU_USED to be checked prior to making use of FPU specific registers and functions */#if defined ( _CC_ARM ) #if defined _TARGET_FPU_VFP #if (_FPU_PRESENT = 1) #define _FPU_USED 1 #else #warning Compiler generates FPU instru

2、ctions for a device without an FPU (check _FPU_PRESENT) #define _FPU_USED 0 #endif #else #define _FPU_USED 0 #endif#elif defined ( _ICCARM_ ) /IAR编译工具的开关 #if defined _ARMVFP_ /要求编译出的文件使用FPU功能 #if (_FPU_PRESENT = 1) /检查是否有FPU功能 #define _FPU_USED 1 #else #warning Compiler generates FPU instructions fo

3、r a device without an FPU (check _FPU_PRESENT) #define _FPU_USED 0 #endif #else #define _FPU_USED 0 #endif#elif defined ( _GNUC_ ) #if defined (_VFP_FP_) & !defined(_SOFTFP_) #if (_FPU_PRESENT = 1) #define _FPU_USED 1 #else #warning Compiler generates FPU instructions for a device without an FPU (ch

4、eck _FPU_PRESENT) #define _FPU_USED 0 #endif #else #define _FPU_USED 0 #endif#elif defined ( _TASKING_ ) /* add preprocessor checks to define _FPU_USED */ #define _FPU_USED 0#endif这里针对各种工具链设置了相应的条件编译选项,这里只说IAR的,其他工具链的用户请参考本文自行修改.最上层的开关是 _CC_ARM 这个宏,很明显这个开关是针对MDK工具的,同理IAR工具的开关就叫做 _ICCARM_ 了;然后一个开关就是_

5、ARMVFP_ 了,这个开关要求编译出的文件使用FPU功能,但是m4的FPU并不是必装设备,某些厂家可能会不装这个东西,所以需要检查是否有FPU,即 _FPU_PRESENT 这个开关。在core_cm4.h中有这样的代码:#ifndef _FPU_PRESENT #define _FPU_PRESENT 0 #warning _FPU_PRESENT not defined in device header file; using default! #endif #ifndef _MPU_PRESENT #define _MPU_PRESENT 0 #warning _MPU_PRESENT

6、 not defined in device header file; using default! #endif由上述代码可以知道CMSIS默认的定义是没有FPU的,所以需要我们手动添加FPU存在的定义#define _FPU_PRESENT 1这样FPU存在与否的检查就通过了,所以后面就自动定义了 _FPU_USED 这一开关。因此就有了下面的定义#define _FPU_USED 1因为m4增加了FPU(单精度浮点数),所以很多数学函数都应该用m4专用的,优化过的,而不是之前的通用函数。打开arm_math.h文件* Each library project have differant

7、 pre-processor macros. * * ARM_MATH_CMx: * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, * ARM_MATH_CM3 for building library on Cortex-M3 target * and ARM_MATH_CM0 for building library on cortex-M0 target. * * ARM_MATH_BIG_ENDIAN: * Define macro ARM_MATH_BIG_ENDIAN to build

8、 the library for big endian targets. By default library builds for little endian targets. * * ARM_MATH_MATRIX_CHECK: * Define macro for checking on the input and output sizes of matrices * * ARM_MATH_ROUNDING: * Define macro for rounding on support functions * * _FPU_PRESENT: * Initialize macro _FPU

9、_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries 以上代码说明:要用ARM的数学函数得定义ARM_MATH_CMx即得有下面的定义#define ARM_MATH_CM4如果你想使用STM32F4的FPU功能而又不想管Project中的设置那么使用下面的代码:#define _FPU_PRESENT 1 / FPU开关 #ifndef _ARMVFP_ /要求在生成的代码中使用FPU#define _ARMVFP_#endif#ifndef ARM

10、_MATH_CM4 /要求使用m4的数学库函数#define ARM_MATH_CM4#endif也可以在软件中开FPU功能IAR的设置如下:MDK中的设置如下:对于Cortex-M0或者M3处理器类型,由于没有FPU因此无法直接进行浮点运算,只能将浮点数进行Q规格化 (q7、 q15或Q31)处理,如开平方运算: M0/M3只能通过迭代法 ( 标准数学函数库 ) 计算,而M4直接调用VSQRT指令完成。DSP_Lib的文件结构 事实上arm_math.h文件中的定义就为源文件组使用的。 因此在将源文件组编译为库时,在应用工程中添加这个库和arm_math.h即可访问所有DSP库功能。也可以根

11、据需要只添加arm_math.h和需要的源文件,以缩短程序长度。(1) BasicMathFunctions源文件组提供浮点数的各种基本运算函数,如加减乘除等运算。对于M0/M3只能用Q运算,即文件夹下以 _q7、_q15和 _q31结尾的文件;而M4能直接硬件浮点计算,属于文件夹下以 _f32结尾的文件。(2) CommonTables源文件组 arm_common_tables.c文件提供位翻转或相关参数表。(3) ComplexMathFunctions源文件组复数数学功能,如向量处理,求模运算的。(4) ControllerFunctions源文件组控制功能,主要为PID控制函数。ar

12、m_sin_cos_f32/-q31.c函数提供360点正余弦函数表和任意角度的正余弦函数值计算功能。(5) FastMathFunctions源文件组快速数学功能函数, 提供256点正余弦函数表和任意角度的正余弦函数值计算功能,和Q值开平方运算:Arm_cos_f32/_q15/_q31.c:提供256点余弦函数表和任意角度余弦值计算功能。Arm_sin_f32/_q15/_q31.c:提供256点正弦函数表和任意角度正弦值计算功能。Arm_sqrt_q15/q31.c :提供迭代法计算平方根的函数。对于M4的平方根运算,通过执行VSQRT指令完成。(6) FilteringFunction

13、s源文件组滤波函数功能,主要为FIR和LMS (最小均方根)滤波函数。(7) MatrixFunctions源文件组矩阵处理函数。(8) StatisticsFunctions源文件组统计功能函数,如求平均值、计算RMS 、计算方差 / 标准差等。(9) SupportFunctions源文件组支持功能函数,如数据拷贝, Q格式和浮点格式相互转换, Q任意格式相互转换。(10) TransformFunctions源文件组变换功能,包括复数FFT ( CFFT) / 复数FFT逆运算 ( CIFFT) 、 实数FFT (RFFT) / 实数FFT逆运算(RIFFT ) 、和DCT (离散余弦变换)和配套的初始化函数。在IAR的环境下运行一个简单的浮点运算:主函数如下:通过IAR软件Terminal I/O 窗口观察的输出结果经验证无误。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1