经过几天努力,终于把ucgui移植到ucos上去了,说真的,到现在来看,本来应该是一点都不难,其实就是一个小小的delay();错误,我本人学习stm32由库函数入门,进而用原子的寄存器版本学习stm32,到后来自己摸索学习ucgui,ucos操作系统,而在stm32中自己的大部分底层程序都是用原子的程序再奋斗板,修改而成的,这样由于不是自己写的,所以对于底层的程序一直也没有过于深入的了解,这次调试ucgui到ucos上就吃了这个亏:
在原子的寄存器版程序中,delay_ms();和delay_us(); delay_init();都是用systick写出来的,而ucos操作系统正是用systick作时钟基准,所以这些函数执行后,会扰乱ucos操作系统,以下是他们在原子的程序中的原型:
其实上次我能把ucgui移植到stm32上并且成功好像是因为我没有把 delay_init(72); //延时初始化 这个加进去,上次没有搞清楚这些问题,直接导致这次还是得花大时间去解决这些问题
除此之外还有几个地方要注意:
1,触摸任务优先级要高于屏幕任务
2,触摸任务和屏幕任务并不需要高于10
3,阻塞对话框和非阻塞对话框不会影响ucos多任务的进行,没有很大问题
4,调试可以用到在线仿真,逐个排除,逛论坛, 阅读源码
阅读(20) | 评论(0) | 转发(0) |
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
在原子的寄存器版程序中,delay_ms();和delay_us(); delay_init();都是用systick写出来的,而ucos操作系统正是用systick作时钟基准,所以这些函数执行后,会扰乱ucos操作系统,以下是他们在原子的程序中的原型:
其实上次我能把ucgui移植到stm32上并且成功好像是因为我没有把 delay_init(72); //延时初始化 这个加进去,上次没有搞清楚这些问题,直接导致这次还是得花大时间去解决这些问题
除此之外还有几个地方要注意:
1,触摸任务优先级要高于屏幕任务
2,触摸任务和屏幕任务并不需要高于10
3,阻塞对话框和非阻塞对话框不会影响ucos多任务的进行,没有很大问题
4,调试可以用到在线仿真,逐个排除,逛论坛, 阅读源码
相关热门文章
给主人留下些什么吧!~~
评论热议