共2条
1/1 1 跳转至页
ARMLPC2131 ARMLPC2131中断棘手问题

问
在2131中使用中断(用的是ZLG的模板),在中断里计数,然后在主程序中用while(count<10);等待,并判断是否计数到一定的值,然后跳出while,关中断,做下面的程序.
但是现在的问题是,while怎么也跳不出,后面的事情做不了(中断是可以关的),在while中用if,break也不行,感觉是循环中不能判断.也不知道是什么原因.
PS:各种中断都试过,好象都存在这个问题 答 1: 继续问题我用了周立功那本《深入浅出ARM213X 上册》中的快速中断实验1。 在中断中加了count++; 把Main 中的 while(1) 改为 while(count<10); 也一样跳不出 while. 这是什么道理啊 答 2: 试试看不知道你可确定是否中断真的发生了,可以通过在中断处理程序中设端点,来确认这点。
如果确实发生中断了,在count前加一个volatile限定词,再试试。 答 3: 太感谢了我中断是可以做的。刚才试了在Count前加volatile解决了。太感谢了。你能讲一下原因吗? 留个Msn或QQ吧,方便以后和你交流。谢谢 答 4: 呵呵你自己看下数据的存储方式, 答 5: static才是对的吧?声明为全局变量 答 6: 楼上 也得 补补课!免得到时耽搁时间! 答 7: 你可以上keil的网站不好意思才回复。keil的网站有关于volatile限定词的作用介绍。你可以看一下ZLG提供的头文件,里面所有寄存器的定义都使用了这个限定词。 答 8: volatile好像记得用volatile修饰的变量在程序访问时是需要到变量的实际地址去访问,而没有用volatile修饰的变量在编译的时候有可能被优化,就是说把这个变量值放到一个寄存器中,下次读取的时候是读的寄存器中的变量值,而不是这个变量的实际地址里的值。大概就是这个意思,不对的地方请大家指教,拍砖。 答 9: re 在线网友 发表于 2006-9-13 22:49 ZLG-ARM ←返回版面
楼上 也得 补补课!免得到时耽搁时间!
volatile是用于防止编译器优化掉的,比如IO口,串口buf都要用volatile来修饰。
static是用于指定变量类型为静态分配而不是临时动态分配,好比全局变量一样,二者的区别只是别的函数不能访问static变量,而全局的可以
不知理解对否,请发表高见 答 10: 被优化掉了看看编译后的汇编语言就会明白是什么问题了
但是现在的问题是,while怎么也跳不出,后面的事情做不了(中断是可以关的),在while中用if,break也不行,感觉是循环中不能判断.也不知道是什么原因.
PS:各种中断都试过,好象都存在这个问题 答 1: 继续问题我用了周立功那本《深入浅出ARM213X 上册》中的快速中断实验1。 在中断中加了count++; 把Main 中的 while(1) 改为 while(count<10); 也一样跳不出 while. 这是什么道理啊 答 2: 试试看不知道你可确定是否中断真的发生了,可以通过在中断处理程序中设端点,来确认这点。
如果确实发生中断了,在count前加一个volatile限定词,再试试。 答 3: 太感谢了我中断是可以做的。刚才试了在Count前加volatile解决了。太感谢了。你能讲一下原因吗? 留个Msn或QQ吧,方便以后和你交流。谢谢 答 4: 呵呵你自己看下数据的存储方式, 答 5: static才是对的吧?声明为全局变量 答 6: 楼上 也得 补补课!免得到时耽搁时间! 答 7: 你可以上keil的网站不好意思才回复。keil的网站有关于volatile限定词的作用介绍。你可以看一下ZLG提供的头文件,里面所有寄存器的定义都使用了这个限定词。 答 8: volatile好像记得用volatile修饰的变量在程序访问时是需要到变量的实际地址去访问,而没有用volatile修饰的变量在编译的时候有可能被优化,就是说把这个变量值放到一个寄存器中,下次读取的时候是读的寄存器中的变量值,而不是这个变量的实际地址里的值。大概就是这个意思,不对的地方请大家指教,拍砖。 答 9: re 在线网友 发表于 2006-9-13 22:49 ZLG-ARM ←返回版面
楼上 也得 补补课!免得到时耽搁时间!
volatile是用于防止编译器优化掉的,比如IO口,串口buf都要用volatile来修饰。
static是用于指定变量类型为静态分配而不是临时动态分配,好比全局变量一样,二者的区别只是别的函数不能访问static变量,而全局的可以
不知理解对否,请发表高见 答 10: 被优化掉了看看编译后的汇编语言就会明白是什么问题了
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 |