ucosiii浅析内核对象-软件定时器
Posted lzd626
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ucosiii浅析内核对象-软件定时器相关的知识,希望对你有一定的参考价值。
内核对象和各种内核机制的函数接口都在os.h里声明,实现在各自的.c文件,比如os_tmr.c和os_time.c。
C语言全局变量一般会默认初始化;局部变量如若不初始化,会分配垃圾数据的;建议使用时都手动初始化。
其实使用内核对象时,就类似与使用任务,只不过在创建对象之前,要先声明一个内核对象。
好了,上面闲聊了几句,今天来说说ucosiii的几个内核对象。
首先说“软件定时器”,其实单纯的讲就是定时作用,这里我们要注意的就是,使用它方法和使用任务类似;那么我们就先来分析分析任务的执行过程:
- main会初始化ucos;调用一个起始任务创建函数(它的参数就是就是任务的工作模式,任务信息,任务函数指针)来创建任务;启动多任务管理。
- 任务函数指针指向起始任务函数会初始化操作系统;调用若干普通任务创建函数(与上一致)来创建任务;删除起始任务本身。
- 任务函数就会完成具体的操作。
那继续说软件定时器,在上面的3里任务函数会声明一个定时器对象,然后调用一个定时器创建函数(它的参数为定时器信息,工作模式,回调函数指针等)来创建任务,回调函数完成一些自定义的操作(每次定时完成会调用此回调函数),最后调用OSTmrStart()启动软件定时器;接下来就可以使用它了。
我们可以知道,用OSTimeDly是将任务置为等待态,CPU的使用权暂时被剥夺,开启定时器之后,该任务还是可以使用CPU。
通过debug我们也可以发现,运行完OSTimeDly之后(也可以说定时了指定时间之后),会完成一次回调函数里面的操作。也就验证了这个结论“定时完成之后会调用回调函数”。
以上是关于ucosiii浅析内核对象-软件定时器的主要内容,如果未能解决你的问题,请参考以下文章