打印

请教显示时序问题

[复制链接]
2623|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shuidi_wangdan|  楼主 | 2013-4-26 10:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shuidi_wangdan 于 2013-4-26 11:27 编辑

我自己做了一个12864液晶显示程序,我自己做了一个连接其他设备时的一个动态画面,发现一个现象,当我的主循环在100微妙时,动态画面会缺少一部分,扫描不全,当我把主循环改为5毫秒时,显示正常了,我用定时器改变画面的变化,定时器为10毫秒,请高手指点!!!在线等!!!

相关帖子

沙发
NE5532| | 2013-4-26 11:13 | 只看该作者
主循环里有些什么内容?怎么控制主循环时间5mS,10mS的??

使用特权

评论回复
板凳
shuidi_wangdan|  楼主 | 2013-4-26 11:24 | 只看该作者
本帖最后由 shuidi_wangdan 于 2013-4-26 11:30 编辑
NE5532 发表于 2013-4-26 11:13
主循环里有些什么内容?怎么控制主循环时间5mS,10mS的??


循环一次的时间,主循环里是检测按键的,只检测按键需要100us,这时候显示有问题,如果我在主循环里加一个显示数字的函数,主循环就变为5ms,这时候显示正常,画面中不缺少任何东西!定时器定时是10ms,我在定时器里改变换画面变化的状态.

使用特权

评论回复
地板
shuidi_wangdan|  楼主 | 2013-4-26 13:32 | 只看该作者
这个问题真急死我了,单步执行还真费劲,

使用特权

评论回复
5
NE5532| | 2013-4-26 14:49 | 只看该作者
主循环里有什么程序参与了显示的?比如查字库,查表,装配数据包之类?

使用特权

评论回复
6
mohanwei| | 2013-4-26 15:51 | 只看该作者
搜一下:临界区、volatile……

使用特权

评论回复
7
shuidi_wangdan|  楼主 | 2013-4-26 16:15 | 只看该作者
我单步调试了一下,发现全局变量在定时器中被赋值以后,在主循环里的值是零了,不知道数据是怎么丢失的,我还在查找中........................

使用特权

评论回复
8
shuidi_wangdan|  楼主 | 2013-4-26 16:44 | 只看该作者
本帖最后由 shuidi_wangdan 于 2013-4-26 16:48 编辑

问题找到了,我定义了一个全局变量angle_staus,angle_staus是在定时器中被赋值,我在主循环中检测变量angle_staus状态时用了switch语句,我在变量angle_staus没有相等的值时,就default :angle_staus=0;,所以当在此语句之前定时器中断发生,虽然在中断里angle_staus被复值了,但定时器退出时,接着angle_staus就被清零了,所以才出现了动态显示不完整的现象,谢谢老师们!!

使用特权

评论回复
9
杨爱林林| | 2013-4-26 17:17 | 只看该作者
6楼一语道破

使用特权

评论回复
10
shuidi_wangdan|  楼主 | 2013-4-27 08:24 | 只看该作者
杨爱林林 发表于 2013-4-26 17:17
6楼一语道破

我不太理解6楼的意思,您能给讲解一下吗?谢谢!!

使用特权

评论回复
11
杨爱林林| | 2013-4-27 08:45 | 只看该作者
你定义的全局变量angle_staus
但是你在main里面用它的过程中
angle_staus发生意想不到的改变(此处 你的中断改变了angle_staus的值)

使用特权

评论回复
12
shuidi_wangdan|  楼主 | 2013-4-27 08:51 | 只看该作者
杨爱林林 发表于 2013-4-27 08:45
你定义的全局变量angle_staus
但是你在main里面用它的过程中
angle_staus发生意想不到的改变(此处 你的中 ...

谢谢,确实是这样,受益了,以后要注意这方面了!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:奇葩满天下,不分你我他! 奋斗!https://bbs.21ic.com/static/image/smiley/chubby/17.gif[/url]

65

主题

549

帖子

3

粉丝