你了解STM32吗?对IAR优化选项你知道多少

379 篇文章 9 订阅
订阅专栏
157 篇文章 3 订阅
订阅专栏

STM32 IAR 优化选项介绍

大家好,我是单片机一哥,这篇文章给大家介绍一下STM32 IAR优化选项的设置

IAR优化选项包括:无优化、低等级优化、中等优化、高等优化。

8ce2b8c57b34b7140e33fd3a00979eee.png

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得回复一哥///

d1a1c4a6c8c363a2642ccc0f1dad3a4f.png

公共子表达式压缩

公共子表达式压缩是较为常见的优化方式,这种方式既能够较少代码的大小,也能够缩短运行的时长,编译器可能会依据代码高低文产生愈加复杂的优化结果,假如对数组或矩阵进行访问时,须要的数组索引计算,有的时候代码中可能会使用大量的宏,虽然在代码中比较简洁,但也可能在代码中产生很多反复计算,编译器使用这种优化也会有很好的结果。

在公共子表达式压缩优化中,不仅会使用寄存器,也有可能会使用在内存中的临时变量,但是由于局部代码的执行被优化,所以优化后的代码可能会比较难进行调试。

7266599bbbac63661d1ce186d931d191.png

循环展开

循环展开是在编译时已确定须要循环的次数,将循环体展开,来降低每次循环循环体外的运算开销。

这种优化适用于小循环,由于小循环的循环体外运行开销比重比较大,降低循环次数会明显提高整体的执行效率。显然,这种循环的展开会增加代码的大小,但是编译器会屡次进行试探性编译,然后计算编译后辈码的执行速度和大小,并依据用户的选择来决定如何进行优化。同样,优化后的代码与原来的代码有很大的不同,也会造成调试上的艰难。

e74a38a1d3c5396b4ffdbdaf77acba61.png

函数内联

函数内联能够减少函数调用时产生的运行开销,缩短执行时长,但可能会增加代码的大小,一般情况下,选择代码量优先时使用该优化不会增加代码的大小。

是否进行函数内联优化取决于编译器进行的试探性编译。

同样,优化后的代码可能比较难进行调试。

2727dc4b23e6ad144811f6ce934e218a.png

循环不变量外提

在许多循环中,通常有一些表达式或运算的结果在循环中是不会改变的,那么这部分内容可以将其转移到循环外部,就可以节省许多循环的工作量。

这种优化通常既可以节省代码空间,也可以提高运行的效率,但同样会导致优化后的代码比较难进行调试。

a3ecec29a89be51d20077f9590412cb9.png

基于类型的别名分析

当两个或者多个的指针访问同一个地址时,其中任意一个变量或者指针就称为其他变量或者指针的别名变量。

假如程序中存在别名变量,会使程序优化变得非常艰难,由于在编译时不可能知道一个指定地址上的数据是否被变更了。

基于别名分析的优化,假设所有访问都是基于被访问对象所声明的类型,这样能够由编译器来判断是否有多个指针访问了同一块存储区。

对于规范C或者C++程序,这种优化能够减少代码的大小,降低执行时长。

对于非规范的C或者C++程序,可能会导致生成错误的代码。

静态变量重组

一般的情况下,全局和静态变量的位置是根据编译器编译的先后次序进行分配。使用静态变量重组优化后,同一模块中的静态和全局变量会被重新组织,尽量靠近在一起,这样编译器就能够使用同一个机制来访问多个变量。

ce68c3444592e751876bdb42910d7d31.png

指令规划

合理的汇编指令规划能够有效发挥处理器的处理能力,能够将资源访问冲突导致的流水线等待降到最低。

8cb8523987c38b25f482f60c5aeb334e.png

其他代码优化

a4bfe8c61ef884f2b4de5f9fb818f058.png

优化选项调整的次序:从低到高级,从部分到全局。

·在程序设计中,假如对个别等级的函数须要进行精确的优化调整,能够使用预处理命令,单独定制函数的优化选项。

·有些时候在进行读写共享变量、读写外设寄存器端口或者运行存在副作用的其他操作时,不希望编译器进行调整运算或赋值次序、删除认为没有作用的代码、将变量分配在通用寄存器里等等这些优化操作,那么能够使用volatile对所要操作的对象进行说明。

一般可以在以下情况使用volatile

·对象的值会在编译器不知道的情况下发生改变,例如外设寄存器的值发生改变;

·程序进行的操作具有副作用,例如连续读或写某外设寄存器两次,硬件上具有特定的意义;

·有多个程序共享被操作的对象,例如操作系统中的多个任务,主程序和中断服务程序。

使用volatile后,被声明的变量不会被分配在通用寄存器中,程序对这些变量的访问次序也不会被编译器改变,对变量的访问不会被删除。

想要学习单片机的朋友 ,做毕业设计的同学,关注我们,回复一哥,与导师一起学习成长,共同进步,还有更多资料领取。

说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~

-END-

*本文系网络转载,版权归原作者所有,如有侵权请联系删除

UCOSII For STM32F103ZE and IAR
01-12
《UCOSII在STM32F103ZE上的移植与IAR开发环境应用详解》 UCOSII,全称 μC/OS-II,是一款广泛应用的实时操作系统(RTOS),以其小巧、高效、可移植性而著称。STM32F103ZE是意法半导体公司(STMicroelectronics)...
STM32F103C8T6的IAR工程
02-05
1. **项目配置**:首先,你需要在IAR Embedded Workbench中新建一个工程,并选择正确的MCU型号(STM32F103C8T6)。这将自动设置基本的编译器和链接器选项。 2. **库管理**:为了使用STM32的外设功能,通常需要引入...
IAR优化详解
weixin_48142918的博客
02-19 4643
-引用 https://v.youku.com/v_show/id_XNzE2MDY5NDI0.html List item 不优化:所有的变量都可以被观测到。 低优化:变量不再使用时,不被观测。 中等优化 1、common subexpression elimination 去除 通用子表达式 2、loop unrolling 循环展开 3、Function Inlining 函数内联 4、code motion 程式码调整 5、type-based alias analysi
IAR 编译优化等级详解
最新发布
认真搞搞汽车MCU
07-10 870
大家好,这里是快乐的肌肉。最近在迁移工程到IAR编译器上,发现编译优化等级变成了Low\Medium\High等,这与之前GCC优化等级-O1\2\3等有什么不同呢?因此简单总结一下。
C语言编译的优化等级应该选哪个?O0、O1、O2还是O3
manhuami2007的博客
04-27 1859
在使用IDE开发STM32程序时,IDE一般都会提供优化等级设置的选项,例如KEIL提供的O0、O1、O2和O3,这些不同的优化等级有什么区别,应该如何选择?
IAR中的断点与代码优化等级问题
geekYatao
08-31 7879
本文可用来解决CC2530在ZSTACK下可以设置断点,调试的时候却无法到达这个断点的问题。其它在IAR中可以单步调试却无法进入断点的单片机也可以参考。 首先要确定勾选了C-SPY-specific extra output file 如果在A行设置的断点,单步调试的时候却只能到达A后边的某几行,可能的一个原因就是代码优化等级太高了,导致编译器实际上没有在A行停顿。 解决办法: 在OP
IAR开发环境的安装、配置和新建STM32工程模板
热门推荐
Guard_Byte的博客
08-06 1万+
本文主要介绍IAR的下载安装和基于STM32新建工程模板。IAR Embedded Workbench For ARM ,它是一种增强型一体化开发平台,其中完全集成了开发嵌入式系统所需要的文件编辑、项目管理、编译、链接和调试工具。IAR公司独具特色的CSPY调试器,不仅可以在系统开发初期进行无目标硬件的纯软件仿真,也可以结合JLink/JTrace硬件仿真器,对用户系统进行实时在线仿真调试。
IAR创建STM32标准工程
RMB20150321的博客
12-11 3513
IAR里面编译运行STM32
IAR开发环境 编译器优化 STM8代码优化
小康师兄
05-06 1271
IAR开发环境 编译器优化 STM8代码优化
iar代码优化影响运行速度吗_原创---IAR优化等级对FGPIO执行速度的影响
weixin_39842611的博客
12-23 296
在灯光控制、IO模拟Flex Bus等很多应用中,对GPIO的翻转速度有很高的要求,M0+内核中集成了一个特定的single-cycle I/O port,Kinetis中我们称之为Fast GPIO(FGPIO)。它可以完成对IO口的单周期load和store,主要的区别在于FGPIO的端口可以被内核零等待的访问,于是可以达到Core Clock的速度,而普通GPIO需要内核通过内部的cross...
STM32开发IAR工程
12-11
STM32是一款基于ARM Cortex-M内核的微控制器,广泛应用于嵌入式系统设计中。...在实际操作中,开发者还需要不断学习和实践,以熟悉STM32的外设特性和IAR工具的高级特性,从而优化代码性能和提高开发效率。
IAR优化设置
09-14
IAR优化设置,对于开发单片机的工程师,IAR的开发环境中需要对编译器进行优化设置的时候,可以参考以上说明
IAR代码优化
04-21
AVR单片机代码优化技巧,主要讲述18种方式缩减代码量、5种方式缩减RAM需求
STM32F10_IAR_全新项目模版
10-25
在本压缩包"STM32F10_IAR_全新项目模版"中,提供了一个针对STM32F103C8T6型号的初始开发环境,方便用户快速进行编程开发。 1. **STM32F103C8T6**:这款芯片是STM32F10系列中的一个成员,具有64KB闪存和20KB SRAM,...
ADC.zip_STM32 IAR_STM32 IAR adc_iar stm32 adc_stm32 ADC iar
09-23
IAR环境中编写和调试STM32的ADC代码,可以享受到强大的代码优化能力和友好的用户界面。使用IAR IDE,开发者可以方便地设置ADC初始化参数,如采样时间、转换分辨率、数据对齐方式以及触发源等。 在"ADC.zip"压缩包...
新建stm32工程(IAR
qq_37932504的博客
07-21 3013
1、环境 硬件平台 stm32F103C8 stm固件库:STM32F10x_StdPeriph_Lib_V3.5.0.rar IDE:IAR 2、文件整理 2.1、新建文件夹newProject 2.2、在newProject文件夹下新建Lib、Project、User、Output文件夹 2.3、文件复制 a、将inc和src文件夹复制到Lib下(STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver..
IAR开代码优化Low运行不正常
yky189的博客
09-08 728
定时器定时不准确/IAR 代码优化异常
IAR使用技巧
Mrsgflmx的博客
02-26 1533
如果定义的变量在多个文件中使用,但是在此时并不清楚这些变量的具体位置时,我们可以使用全局搜索功能,将变量的位置在Message中罗列出来,这样可以快速找到变量,加强了程序的可读性。编译后,在编译目录中/list/文件夹中,找到并打开.map文件,文件最上面可以看到编译时间、Linker的版本、编译的程序文件等,堆栈信息都在"PLACEMENT SUMMARY" 的"P2"中,我们向下拉,找到"P2"最后一个part,可以看到堆Heap 栈Stack的起始地址;库开发的优点:开发速度快,可读性好;
STM32提高程序运行效率的方法
Pluto__xu的博客
01-13 3513
而局部变量大多定位于MCU内部的寄存器中,在绝大多数MCU 中,使用寄存器操作速度比数据存储器快,指令也更多更灵活,有利于生成质量更高的代码,而且局部变量所的占用的寄存器和数据存储器在不同的模块中可以重复利用。通常使用自加、自减指令和复合赋值表达式(如a-=1 及a+=1 等)都能够生成高质量的程序代码,编译器通常都能够生成inc 和dec 之类的指令,而使用a=a+1 或a=a-1之类的指令,有很多C 编译器都会生成2~3个字节的指令。生成的代码与源代码密切相关,但生成的代码要多得多,包括死代码。
stm32f429 freertos移植iar
01-24
在进行STM32F429芯片的FreeRTOS移植到IAR开发环境时,首先需要将FreeRTOS源代码添加到工程中。这可以通过将源代码复制到项目目录下,在IAR中添加工程文件来实现。在IAR软件中,选择“Project”菜单,然后选择“Add Files”选项,将FreeRTOS源代码添加进来。 然后,需要在IAR中进行一些配置以适配STM32F429芯片和FreeRTOS。首先,在IAR中打开STM32F429芯片的启动文件,修改适配FreeRTOS所需的堆栈大小和任务优先级等参数。 接下来,在FreeRTOSConfig.h文件中定义与STM32F429芯片相关的硬件和中断配置,包括时钟配置、任务堆栈大小、中断优先级等,并根据实际应用需求进行配置。 然后,在IAR中设置编译器选项,确保正确的编译FreeRTOS相关源文件。这包括设置编译器的优化等级,并确保所有的FreeRTOS文件都被编译。 完成以上配置后,就可以编译代码并下载到STM32F429芯片上运行。在运行之前,可以根据实际需要配置任务、信号量、队列等FreeRTOS的相关组件。 最后,在IAR中使用调试工具可以对移植后的FreeRTOS进行调试,查看任务执行情况、调度器工作情况、中断处理等。 综上所述,移植STM32F429芯片的FreeRTOS到IAR开发环境中需要进行一系列的配置和调试工作,以确保FreeRTOS能够在该开发环境中正常运行。这样能够充分利用STM32F429芯片的资源和功能,并实现多任务、实时调度等特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • ARM 架构是什么? 6848
  • 嵌入式工程师的生活状态是怎样的?和做单片机的和程序员的生活一样吗? 5869
  • 服务器为什么大多用 Linux? 5288
  • 单片机学到什么程度才可以去工作? 5257
  • 学习阶段单片机买esp32还是stm32? 4724

分类专栏

  • 嵌入式 401篇
  • 智能小车 129篇
  • 51单片机 157篇
  • 三菱plc 13篇
  • plc编程 13篇
  • 机器视觉 21篇
  • 系统 5篇
  • 程序员 5篇
  • 计算机 17篇
  • 软件工程师 1篇
  • 单片机 379篇
  • 编程语言 3篇
  • 物联网 3篇
  • 计算机视觉 1篇
  • 嵌入式编程 2篇
  • 编程 362篇
  • 代码 1篇
  • 人工智能 2篇
  • stc 88篇
  • 自动化 2篇
  • 工控 2篇
  • 上位机 19篇
  • 工控自动化 2篇
  • 机电一体化 2篇
  • 嵌入式开发 2篇
  • C语言 1篇
  • plc 1篇
  • 单片机学习 6篇
  • STM32 5篇

最新评论

  • arm 、stm32、linux该如何学习?有没有先后顺序,先学什么比较好?

    蓝天居士: STM32不就是ARM吗? 学习路线建议先裸机后RTOS最后Linux。 当然,可以先接触一些Linux的应用和系统层面的知识。

  • 学习阶段单片机买esp32还是stm32?

    weixin_51472072: 888

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • FreeRTOS是硬实时操作系统吗?
  • 嵌入式开发入门指引
  • 大神们能不能用直白的话解释一下编程?
2024
07月 23篇
06月 33篇
05月 48篇
04月 59篇
03月 58篇
02月 20篇
01月 51篇
2023年360篇
2022年28篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机一哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码深圳品牌网站设计大鹏网络营销沙井网站排名优化福永关键词按天计费塘坑网站关键词优化横岗网站开发坂田网页设计石岩网站建设设计大浪优化惠州SEO按效果付费深圳推广网站坪地seo网站推广坂田企业网站改版光明网站推广方案坑梓模板推广同乐网站推广民治百度爱采购盐田网站制作设计大芬网站搜索优化同乐网站推广工具盐田百度标王盐田网站优化按天收费大芬网站建设设计横岗网站制作设计龙华关键词排名包年推广大芬网络营销爱联网站推广系统西乡设计公司网站福永seo坪山百姓网标王推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化