热心网友
回答时间:2024-04-27 15:32
按键处理,UCGUI我没研究过,不过我研究过WINCE下的中断处理与消息分发机制,我想他们大致是差不多的。在WINCE下,各个的中断都被翻译成一个逻辑中断号,在ARM处理器下,IRQ的中断入口地址只有一个,所以只要是中断,都是最先由同一个中断程序服务的,WINCE里,在IRQ里先找到中断的类型,翻译成逻辑中断号,下发到各个任务。其实等待按键的任务是被阻塞的,也就是挂起了,等待按键消息发布下来,从挂起态恢复到就绪态的。我想UCGUI没有WINCE那么麻烦,不过大致原理可以猜一猜,WINDOWS下的图形控件都是单线程的,我想UCGUI的窗口也是基于单任务的,绘制图形完毕,大部分时间是在等待按键消息而处于挂起状态的,当按键发生了,UCOS的中断服务函数会刷新各个任务的状态,把等待按键的任务置成就绪态,这样,再次运行起来,你调试时下的断点就能捕捉到这个消息了。。。
收起