MDK编译环境下的问题困扰好久了……

[复制链接]
2629|11
 楼主| jxmzzr 发表于 2013-6-6 20:08 | 显示全部楼层 |阅读模式
1.jpg
2.jpg
上图中的level 0选项是什么意思?
我选level 0的时候,执行while(1){ GPIOA->BRR=0x0001; GPIO->BSRR=0x0001;} 得到的脉冲频率是3Mhz左右,选择level 3的时候,执行同样的语句,得出来的脉冲频率是8Mhz左右,到底是怎么回事?我刚开始学这个。这问题困扰我好久了。
 楼主| jxmzzr 发表于 2013-6-6 20:09 | 显示全部楼层
补充,我的编译环境是MDK,编写STM32程序
mmuuss586 发表于 2013-6-6 20:24 | 显示全部楼层
?????
自己看看,哪里被优化了。
王小毛wxm 发表于 2013-6-6 20:28 | 显示全部楼层
jxmzzr 发表于 2013-6-6 20:09
补充,我的编译环境是MDK,编写STM32程序

编译器优化级别 https://bbs.21ic.com/icview-135273-1-1.html  你在论坛里搜搜 好多讨论这个的
级别选的不同,会影响得到的代码,有些编程不严谨的逻辑,优化后执行的并不是原来设想的逻辑。这个我说不清楚,你在坛子里搜搜吧
江枫渔火 发表于 2013-6-7 09:31 | 显示全部楼层
选了优化之后,你要在循环变量前加 volatile
figo20042005 发表于 2013-6-7 10:03 | 显示全部楼层
你这个死循环被优化了,试试用IF这样的语句在主程序重新写下
tianli1980 发表于 2013-6-7 10:56 | 显示全部楼层
也正在学习STM32开发板,对KEIL MDK也不熟悉!!!
香水城 发表于 2013-6-7 11:50 | 显示全部楼层
编译优化选项不同,代码的运行当然效果不同。

对于翻GPIO这么简单的操作,看看编译出来的汇编就可知差异在哪里
sgj245609615 发表于 2013-6-8 08:47 | 显示全部楼层
了解一下
 楼主| jxmzzr 发表于 2013-6-11 15:23 | 显示全部楼层
  代码做优化?代码的执行效率更高?  那这和芯片运行的速率有影响么?
trumpxp 发表于 2013-6-11 20:02 | 显示全部楼层
所谓代码优化   是指编译器将一些他认为没有用的代码去除了   所以我们的程序看上去没有问题  实质上确实有问题的
拿起书本 发表于 2013-6-11 21:15 | 显示全部楼层
代码优化掉了 可以看反汇编 汇编语言是否和自己要求的功能一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2188

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部