OpenEdv-开源电子网

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

RA8875控制液晶+实时按键扫描的问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-1-19
在线时间
0 小时
发表于 2014-1-21 21:25:52 | 显示全部楼层 |阅读模式
小弟使用RA8875控制液晶,同时使用RA8875扫描4x5的矩阵键盘:最初,我是在主程序里循环地绘图,使用定时器中断定时读取RA8875扫描到的键码,但是这有一个问题,就是绘图会出现错误。小弟分析了一下,原因很简单:RA8875绘图时需要写入命令,地址,数据等等信息,这些操作是有一定顺序且一一对应。比如你这次写入的命令是0x02,这个命令的含义是向RA8875的DDRAM中写入数据,那么紧跟在这个命令之后的操作就应该是向DDRAM中写数据(参考RA8875手册),假如这时来了定时器中断,在中断中,会向RA8875中写入新的命令去获得按键的值,当退出中断后,主程序继续执行,那么这时候写入的数据就不是写入到DDRAM中去了,(需要重新发送0x02命令才行),从而导致绘图出错。
我把定时器关了,将按键扫描拿到主程序中循环执行,就不会出现这个问题。可是却会出现丢失按键的情况,因为主程序比较长,有时候会有等待。我在网上看到很多人做的界面很漂亮,而且触摸功能、按键也都很及时,我想不明白是怎么做的,还请大家帮帮忙,有什么好的办法没有.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-6-27
在线时间
0 小时
发表于 2014-1-22 10:25:57 | 显示全部楼层
可以設置一個Flag
當主循環程式做寫入DDRAM動作前,先將Flag set,等做完後再將Flag clear.(若怕Flag set,clear動作太頻繁,則在寫入一大區塊資料前後做set,clear)
當Timer interrupt發生時,先判斷Flag狀態,若是在set狀態,則不做讀取key動作,但Timer interrupt flag暫時不清除(這樣才會再度進入Timer interrupt routine),等待Flag為0時,再做讀取Key動作,做完後,再將Timer interrupt flag清除,等待下次Timer interrupt 發生.
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-1-19
在线时间
0 小时
 楼主| 发表于 2014-1-22 12:45:27 | 显示全部楼层
回复【2楼】robin_7766:
---------------------------------
谢谢您,我之前也是要这么做的,我再好好去试一下,在这提这个问题就是想看看有没有更好的方法,大家讨论一下
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 00:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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