备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果。(2)看完教程000~005就基本会用emWin做项目,其他章节可以需要时再参考。
看这篇文章,需要emWin一些基础,如果你还不会用emWin,请先看完” emWin 2天速成实例教程000_如何快速入门ucGUI_emWin”,然后再看这篇文章。
emWin整个工作流程,其实就和几个东西有关:GUI_Init()、GUI_Delay()、GUI_Exec()、回调函数、窗体创建函数、窗体子父关系、PID输入设备(比如键盘、鼠标、触摸屏等等)。
GUI_Init()是emWin的初始化,在初始化之前都不能执行任何和emWin相关的操作。在STemWin中,由于ST在emWin中加入了加密校验,限制STemWin只能用于STM32,因此在GUI_Init()之前必须使能CRC,否则初始化失败。
可以说emWin所有动作都靠循环执行GUI_Delay()或GUI_Exec(),两个函数没有本质区别,GUI_Exec()包含在GUI_Delay()中,即GUI_Delay()在查询OS_TimeMS变量(通过一个硬件定时器每1ms中断加1)实现延时的时候不断的去调用GUI_Exec(),区别在于GUI_Delay()带延时1ms功能,而GUI_Exec()不带延时,但两个函数作用是一样的。emWin的应用程序主函数一般是这样的:
voidMainTask(void)
{
GUI_Init();
创建各个窗体;