OpenEdv-开源电子网

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

程序合并后的延迟疑问

[复制链接]

50

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
690
金钱
690
注册时间
2017-11-23
在线时间
134 小时
发表于 2019-2-13 09:19:59 | 显示全部楼层 |阅读模式
1金钱
各位大神,我把2个功能的程序合并在一起了,编辑正常,下载正常,运行正常,唯一的问题就是按键操作有延迟。
具体情况是这样的,
1个程序功能是2个按键控制1个LED0灯亮灭,按1键,灯亮,按2键,灯灭。
1个程序功能是0.96 OLED屏显示一些固定文字,图片,变化的数值等,这都是自动变化显示的,不受什么条件控制。
用的控制器是STM32F407ZG,
单独下载,运行这2个程序都很正常,显示正常,按键控制也正常,按键一按下,灯立马亮或者灭了。
但我把这2个程序合并到一起的时候,OLED屏显示依然正常,页面切换,数值变化,都很正常,
按键控制的程序,控制正常,但控制却出现了延迟,具体就是,我按下亮灯键,灯不亮,我继续按下亮灯键不放,估计有10s左右,灯才亮了,按灭灯键,也一样需要按很长时间。
原来单独按键控制程序是,按下亮灯键,立马灯就亮了的,灭灯键按下,也立马灯灭的。
不知道这是什么原因啊,请大神们指导指导!!
谢谢啦!!
混合程序截图如下



微信截图_20190213090132.png
微信截图_20190213090203.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

182

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2017-3-8
在线时间
114 小时
发表于 2019-2-13 10:49:20 | 显示全部楼层
你OLED控制的这一部分程序,下边那么多的延时,每一次跑你这个流程都是从上往下执行一遍,可能你这次按键时候跑到了下边你的第一个delay_ms(1500);,然后下边的OLED_Clear();再往后的函数都需要跑完之后才会回到你的KEY_Scan();这个时候才会得到你的键值;   把你下边那么多的延时去掉你就会发现快了很多;最好是把你的键值获取放到中断里。
回复

使用道具 举报

50

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
690
金钱
690
注册时间
2017-11-23
在线时间
134 小时
 楼主| 发表于 2019-2-13 11:01:51 | 显示全部楼层
你是说,CPU在执行OLED显示程序时,我们按键,CPU就检测不到了,是吧,赶上刚执行按键程序时,我们按键,就可以检测到了,是这个意思吧。
你说的这个方法我可以试下看看情况,
回复

使用道具 举报

8

主题

182

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2017-3-8
在线时间
114 小时
发表于 2019-2-13 16:21:22 | 显示全部楼层
温柔的郎 发表于 2019-2-13 11:01
你是说,CPU在执行OLED显示程序时,我们按键,CPU就检测不到了,是吧,赶上刚执行按键程序时,我们按键,就 ...

是这个意思
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 02:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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