Discuz! Board

标题: 新人请教定时器hander问题 [打印本页]

作者: wylng    时间: 2017-5-16 18:11
标题: 新人请教定时器hander问题
本帖最后由 wylng 于 2017-5-16 18:13 编辑

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

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

多谢



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

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

你按键的话 加一个判断管脚状态去抖




欢迎光临 Discuz! Board (http://qfv8.com/) Powered by Discuz! X3