OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6923|回复: 5

mdk4.12的优化问题

[复制链接]

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
发表于 2013-1-10 17:01:47 | 显示全部楼层 |阅读模式
选执行时间优化,优化等级0--3都会出问题

//定时器4中断服务程序 
void TIM4_IRQHandler(void)
{
   if(TIM4->SR&0X0001)
   {
    xxxxxx;
    xxxxxx;
   ABC=0;//溢出中断,ABC是全局变量,
   }
   TIM4->SR&=~(1<<0);//清除中断标志位
}
//
void XXXXXX(void)
{
//   while(ABC);//等待中断把事做完  这里只要优化都会死循环,不优化正常
 //   while(ABC){};//不正常
//   while(ABC){;}//不正常
     while(ABC)XXXX();//等待中断把事做完  改成这样(调用1个任意函数,执行时间小于中断时间)就完全没问题
    ABC=1;
}
不解?????
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2013-1-12 21:52:00 | 显示全部楼层
abc 加 volatile

实在不行就自己反汇编看看。
https://github.com/roxma
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-10 22:12:40 | 显示全部楼层
不解...
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-1-12
在线时间
1 小时
发表于 2013-1-12 21:37:16 | 显示全部楼层
if(判断中断标志)
{
     第一句就要清中断; 
    处理代码...
}

我用的也是4.12版本的MDK,清中断不放在第一句就出现莫名其妙的问题,具体原因我还没找到。
回复 支持 反对

使用道具 举报

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
 楼主| 发表于 2013-1-12 23:59:37 | 显示全部楼层
回复【4楼】Pony279:

abc 加 volatile
实在不行就自己反汇编看看。

---------------------------------
谢谢了,高手就是不一样,一下解决了我以前最大优化带来的很多莫名其妙的问题。基础还是不够啊。
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-12-2
在线时间
0 小时
发表于 2013-4-8 19:14:53 | 显示全部楼层
学习中,还是不太懂。
不积跬步无以至千里,不积小流无以成江海!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-22 02:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表