您尚未登录。

楼主 #1 2017-09-15 21:28:57

goodgoodstudy
会员
注册时间: 2017-09-15
已发帖子: 61
积分: 61

关于 uC/GUI 3.9 逻辑混乱的问题请教大家

正在试用一个 STM32 开发板提供的 ucGUI 3.9,里面的 GUI_TIMER_xxx 逻辑真是恶心啊

谁手上有 ucGUI 源码的,贴一下 GUITimer.c 的 GUI_TIMER_Exec() 函数代码我看看

看看我手上的是某人写的,还是官方源码本来就如此?
我不信官方的连一个简单的 Timer 逻辑都做不好,猜测还是板作者自己写的
代码的意思:

每次 GUI_TIMER_Exec() 去链表 List 里取一个 timer 来处理

如果它的时间到了,处理它,然后 hFirstTimer 指向下一个,等待 GUI_TIMER_Exec 处理
GUI_TIMER_Exec() 的调用就是

main()  {     
    while(1)  {
        …
        GUI_TIMER_Exec();
        …
    }
}

的逻辑了

这是个单向 LIST 链表,

这个 _Exec() 是个“排队”、“跑完一圈就算”的操作(跑完一圈 hFirstTimer == 0 ),

它跑一圈后,你要再想办法让 hFirstTimer 赋值、让 _Exec 重新生效

要让 hFirstTimer 赋值,得重新有 add/remove LIST 的操作

“排队”呢,还好,在 add/remove 时它给你重新排序插入到合适位置。你修改 Delay/Restart 都是重新 remove 再 add 再 sort

但 SetPeriod 呢,是不会的,也就是你中途修改 Timer 参数 小心 哦

谁设计的这 Timer 烂逻辑啊
逻辑极不友好、难用

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn