- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
这个我知道,这是ST的库的问题,在systeminit的函数里,加上以下这一句就行了,就是打开fpu的意思,没有这一句,选了keil的选项也没用的,另外你试试keil的软仿貌似也是不行的,从0x00000无法跳转,总之太新了,bug太多。
voidSystemInit(void)
{
#if(__FPU_PRESENT==1)(__FPU_USED==1)
SCB-CPACR|=((3UL10*2)|(3UL11*2));??/*setCP10andCP11FullAccess*/
#endif
STM32F4之FPU性能的充分发挥-设置要点
???浮点运算一直是定点CPU的难题,比如一个简单的1.1+1.1,定点CPU必须要按照IEEE-754标准的算法来完成运算,对于8位单片机来说已经完全是噩梦,对32为单片机来说也不会有多大改善。虽然将浮点数进行Q化处理能充分发挥32位单片机的运算性能,但是精度受到限制而不会太高。对于有FPU(浮点运算单元)的单片机或者CPU来说,浮点加法只是几条指令的事情。
???现在又FPU或者硬件浮点运算能力的主要有高端DSP(比如TIF28335/C6000/DM6XX/OMAP等),通用CPU(X87数学协处理器)和高级的ARM+DSP处理器等。
???STM32-F4属于Cortex-M4F构架,这和M0、M3的最大不同就是多了一个F-float,即支持浮点指令集,因此在处理数学运算时能比M0/M3高出数十倍甚至上百倍的性能,但是要充分发挥FPU的数学性能,还需要一些小小的设置:
???1.编译控制选项:虽然STM32F4XX固件库的例程之system_stm32f4XXX.c文件中添加了对应的代码,但给用户评估使用的STM32F4-Discovery例程中却没有,因此MDK4.23编写浮点运算程序时,虽然编译器正确产生了V指令来进行浮点运算,但是因为system_stm32f4XXX.c文件没有启用FPU,因此CPU执行时只认为是遇到非法指令而跳转到HardFault_Handler()中断中原地踏步。因此要保证这个错误不发生,必须要在system_init()函数里面添加如下代码:
/*FPUsettings------------------------------------------------------------*/
#if(__FPU_PRESENT==1)(__FPU_USED==1)
SCB-CPACR|=((3UL10*2)|(3UL11*2));?/*setCP10andCP11FullAccess*/
#endif
?????因为这个选项是有条件编译控制的,因此需要在工程选项(Project-OptionsfortargetXXXX)中的C/C++选项卡的Define中加入如下的语句:__FPU_PRESENT=1,__FPU_USED=1。这样编译时就加入了启动FPU的代码,CPU也就能正确高效的使用FPU进行简单的加减乘除了。
???但这还远远不够。对于复杂运算,比如三角函数,开方等运算,如果编程时还是使用math.h头文件,那是没法提升效率的:因为math.h头文件是针对所有ARM处理器的,其运算函数都是基于定点CPU和标准算法(IEEE-754),并没有预见使用FPU的情况,需要很多指令和复杂的过程才能完成运算,也就增加了运算时间。因此要充分发挥M4F的浮点功能,就需要使用固件库自带的arm_math.h,这个文件根据编译控制项(__FPU_USED==1)来决定是使用那一种函数方法:如果没有使用FPU,那就调用keil的标准math.h头文件中定义的函数;如果使用了FPU,那就是用固件库自带的优化函数来解决问题。
???在arm_math的开头部分是有这些编译控制信息:
????#ifndef_ARM_MATH_H
????#define_ARM_MATH_H
????#define__CMSIS_GENERIC?????????????/*disableNVICandSystickfunctions*/
????#ifdefined(ARM_MATH_CM4)
???????????????#includecore_cm4.h
????#elifdefined(ARM_MATH_CM3)
???????????????#includecore_cm3.h
????#elifdefined(ARM_MATH_CM0)
????????????????#includecore_c
您可能关注的文档
- 《浣溪沙·咏梨花》.doc
- 触摸屏——图例说明.doc
- 平桥拆除施工方案.doc
- 浣溪沙(晏殊)(教学课件).ppt
- 10.《浣溪沙》苏轼(张).ppt
- 社保卡的正确使用方法.doc
- c2-土壤样品的采集、制备和水分测定.ppt
- 土壤或植物中铜和锌的测定.ppt
- 材料力学实验报告标准答案.doc
- 03章-土壤有机质的测定.ppt
- 2025年MicroOLED在智能头盔中的应用前景分析报告.docx
- 初中生科技活动中的团队协作能力培养策略研究教学研究课题报告.docx
- 外研版小学英语三年级词汇测试题.docx
- 2023年彭水苗族土家族自治县特岗教师招聘考试真题题库附答案解析.docx
- 《稻渔综合种养生态系统稳定性与水资源利用效率提升策略》教学研究课题报告.docx
- 初中音乐课堂中音乐表现力培养的跨学科融合研究教学研究课题报告.docx
- 2025福建三明市将乐县社区工作者招考13人备考题库附答案详解(满分必刷).docx
- 基于人工智能教育,初中生个性化学习风格演变与教学资源整合策略研究教学研究课题报告.docx
- 《网络安全态势可视化技术在网络安全态势可视化系统前瞻性中的应用》教学研究课题报告.docx
- 2023年平顶山市特岗教师招聘真题汇编附答案解析.docx
原创力文档


文档评论(0)