设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2807|回复: 2
打印 上一主题 下一主题

新人请教定时器hander问题

[复制链接]

1

主题

3

帖子

48

积分

新手上路

Rank: 1

积分
48
跳转到指定楼层
楼主
wylng 发表于 2017-5-16 18:11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wylng 于 2017-5-16 18:13 编辑

我做界面的, 对硬件, 驱动了解不多

我设置了定时器查询按键状态, 如果有用户按键, handler里对界面直接处理, 比如释放掉内存, 回到第一个界面。
问题是定时器是中断, 中断处理会保存上次程序运行的pc指针, 中断处理好之后会返回上次指令的下调指令, 这时我使用中断处理程序释放掉的内存, 程序会崩溃掉.
会不会发生这种冲突呢, 中断可以在程序执行任何位置发生.
是不是只能判断用户按键后,设置个全局变量, 等main里的主循环判断按键这个全局变量, 然后做相应处理?

多谢


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

1

主题

3

帖子

48

积分

新手上路

Rank: 1

积分
48
沙发
 楼主| wylng 发表于 2017-5-18 11:14:32 | 只看该作者
经试验, handler直接处理事务容易出错, 我故意把刷屏时间延长, 就是连续刷屏100次, 刷屏的同时按键, 按键后进入一个菜单, 要更新屏幕, 但是中断之前已经更新一半, 中断处理程序接着更新屏幕, 屏幕会花掉。
如果是中断处理程序在不断刷屏, 刷屏过程中按键, 则无响应, 应该是正在处理中断时, 中断被屏蔽了。
所以中断处理程序尽量简单, 比如只能设置标志, 等main里主循环来统一依次处理
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
板凳
admin 发表于 2017-5-19 22:09:25 | 只看该作者
wylng 发表于 2017-5-18 11:14
经试验, handler直接处理事务容易出错, 我故意把刷屏时间延长, 就是连续刷屏100次, 刷屏的同时按键,  ...

你按键的话 加一个判断管脚状态去抖
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-5-15 22:47 , Processed in 0.112203 second(s), 28 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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