keil优化等级设置为Level 0时,增加或删除部分GPIO翻转的指令,发现GPIO翻转的脉宽会变化。

如l优化等级设置为Level 0时,以下高电平时间为80ns,

LL_GPIO_ResetOutputPin(  GPIOA, LL_GPIO_PIN_12);
LL_GPIO_SetOutputPin(   GPIOA, LL_GPIO_PIN_12);
LL_GPIO_ResetOutputPin( GPIOA, LL_GPIO_PIN_12);

将代码增加到:

LL_GPIO_ResetOutputPin(  GPIOA, LL_GPIO_PIN_12);
LL_GPIO_SetOutputPin(   GPIOA, LL_GPIO_PIN_12);
LL_GPIO_ResetOutputPin( GPIOA, LL_GPIO_PIN_12);
LL_GPIO_SetOutputPin(   GPIOA, LL_GPIO_PIN_12);
LL_GPIO_ResetOutputPin( GPIOA, LL_GPIO_PIN_12);

脉宽时间变为200ns。

将keil优化等级设置为Level 1,时间恢复为80ns,问题解决。

查阅相关资料,对于优化等级的说明如下:

不同的优化级别允许您在级别之间进行权衡已编译代码中可用的调试信息以及代码的性能。以下优化级别可用:
-O0应用最小优化:
大多数优化都被关闭,生成的代码具有最佳的调试视图。
-O1应用受限优化:
例如,删除未使用的内联函数和未使用的静态函数。在这个优化级别,编译器还应用自动优化,例如删除冗余代码和重新排序指令以避免互锁情况。生成的代码经过合理优化,具有良好的调试视图。
-O2应用高优化(这是默认设置):
在此级别应用的优化利用了ARM对处理器体系结构的深入了解,利用给定目标的特定于处理器的行为。它生成优化良好的代码,但有限调试视图。
-O3应用最积极的优化:
优化符合用户的-Ospace / -Otime选择。默认情况下,多文件编译是启用,这会导致更长的编译时间,但会提供最高级别的优化。
Optimize for Time
“优化时间”复选框使编译器进行优化,更加注重实现最佳效果检查时的性能(-Otime)或未选中时的最小代码大小(-Ospace)。
取消选中Optimize for Time就意味着选择-Ospace选项,该选项指示编译器执行优化以可能增加的执行时间为代价来减小Image文件大小。例如,使用非内联函数调用而不是大型结构副本的内联代码。 这是默认选项。从中运行编译器时命令行,使用'-Ospace'调用此选项选中Optimize for -Otime选项,该选项指示编译器以最快的速度优化代码执行时间,有可能增加image文件大小。建议编译时间关键部分您的代码使用-Otime,其余使用-Ospace指令。

https://zhuanlan.zhihu.com/p/273445617

keil优化等级影响STM32 GPIO速度变化相关推荐

  1. keil优化等级设置

    优化级别说明(仅供参考): 则其中的 Code Optimization    栏就是用来设置C51的优化级别.共有9个优化级别(书上这么写的),高优化级别中包含了前面所有的优化级别.现将各个级别说明 ...

  2. iar代码优化影响运行速度吗_IAR中优化等级对Kinetis FGPIO执行速度的影响

    在灯光控制.IO模拟Flex Bus等很多应用中,对GPIO的翻转速度有很高的要求,M0+内核中集成了一个特定的single-cycle I/O port,Kinetis中我们称之为Fast GPIO ...

  3. 单片机编程软件很简单(22),keil单片机编程软件优化等级+概念解析

    单片机编程软件是单片机使用过程中不可缺少的一环,因此对于单片机编程软件,相关人员应当具备一定了解.往期文章中,小编对单片机编程软件有过诸多介绍.本文对于单片机编程软件的介绍基于两点:1.keil单片机 ...

  4. KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】【use microlib选项】

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

  5. 做网络推广浅析影响网站打开速度的因素,促进网站SEO优化效果提升!

    随着网站之间的竞争力越来越大,做网络推广表示在网站优化的过程中,也越来越注重"拼速度"了,打开越快的网站就越受用户喜爱和欢迎.那么在网站优化中,网站打开的速度都受哪些因素影响呢?相 ...

  6. KEIL编译器【C语言编译选项优化等级说明】

    参考:https://blog.csdn.net/chengdong1314/article/details/53463183 KEIL编译器C语言编译选项优化等级说明 摘录于:http://blog ...

  7. 关于STM32 GPIO配置基础概括

    一.词汇表 1.介绍常用词的定义: 缩略词 包含定义 AMR 绝对最大额定值(ABSOLUTE MAXIMUM RATINGS 更多地人称为: ABS) GPIO 通用输入/输出 GP 通用 P 推挽 ...

  8. volatile关键字对编译器优化的影响

    关注.星标公众号,不错过精彩内容 初学的朋友可能不怎么关心优化选项,但对于经验丰富的工程师来说,掌握代码优化是必备技能. 今天讲述的话题就是关于代码优化中,关键字volatile在优化过程中起到的作用 ...

  9. STM32 GPIO BRR和BSRR寄存器

    STM32 GPIO BRR和BSRR寄存器 使用BRR和BSRR寄存器可以方便地快速地实现对端口某些特定位的操作,而不影响其它位的状态. 引脚的高.低电平控制,有3种方法(3个寄存器) 分别是通过G ...

最新文章

  1. T-SQL IN 谓词
  2. 减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现
  3. 澜起科技云计算服务器_服务器严重缺货!云应用大爆发!云计算正强势起爆(附龙头)...
  4. K8S精华问答 | Kubernetes集群常见问题
  5. 你必须知道:localStorage、sessionStorage 和 Cookie 区别在什么地方
  6. echarts 生成 迁徙图_百度地图+echarts(迁徙图)
  7. matlab第四章答案,matlab第四章课后
  8. 深度linux操作系统怎么样,深度Deepin国产操作系统使用体验报告!
  9. excel表转成PDF文档
  10. Unity ASE点光源不显示的问题
  11. zabbix基础·配置短信报警
  12. Final Cut Pro资源库占用内存太大如何释放磁盘空间?
  13. 蚂蚁金服面试题及答案-总结
  14. python读取加密word_Python 实现加密过的PDF文件转WORD格式
  15. 三菱PLC N:N 通讯
  16. 【html】屏蔽浏览器自带的输入提示
  17. 《新参者》—— 读后总结
  18. 常用自媒体工具网站大全,收集整理32个工具分享!
  19. 股市大跌对于IT行业的我们应该如何应对!2020年Android开发的未来发展方向该如何走?
  20. 易语言json解析 没有数组的成员数

热门文章

  1. Python中路径的写法
  2. python学习(五)--打印错误信息
  3. apicloud 项目常用插件
  4. apicloud 使用教程
  5. RHCSA 核心考点列表
  6. Android 二维码扫描(仿微信界面),根据Google zxing
  7. 鼠标右键转圈圈_鼠标点击右键后一直转圈圈
  8. asp.net打开新标签页
  9. 5 位改变世界的女性程序员
  10. Kubernetes系列之五:使用yaml文件创建service向外暴露服务