ucosiii
丶你微笑时好美丶
优秀不够你是否无可替代
展开
-
ucosiii时间管理
上一篇博文介绍了内核是怎么在时钟节拍到来是更新节拍列表的,本文介绍任务插入节拍列表的实现过程,在调用延时函数时也会涉及到这个过程。从串口打印出来的结果来看,精度还是相当高的,延时时间都是偏少的。存在些许误差的原因主要是在插入的时候可能在两个节拍的任何时刻,退出延时时,一定是在节拍到来处理节拍任务的时候。如图所示,虽然设置延时节拍个数是5个,但是的节拍比大部分都会小于5个,途中的小黑块表示节拍任原创 2017-02-16 16:08:14 · 499 阅读 · 0 评论 -
任务控制块及其链表
在任务控制块的管理上需要两个链表,一条是空任务块链表(其中所有的任务控制块都没有分配给任务)和一条任务块链表(其中所有任务控制块都已分配给任务),具体做法是:原创 2017-02-15 13:13:49 · 2165 阅读 · 0 评论 -
软件定时器
ucosiii的软件定时器是在系统节拍的基础上分频得到的。定时器的本质是递减计数器,当计数器减到0时可以触发某种动作执行,这个动作通过回调函数来实现。当定时器计数完成时,定义的回调函数会立即被调用,应用程序可以有任意数量的定时器,ucosiii中定时器的时间分辨率由宏OS_CFG_TMR_TASK_RATE_HZ表示步长,比如一次10ms,那么100次就是1s,单位为Hz默认100Hz注意原创 2017-02-16 19:41:07 · 940 阅读 · 0 评论 -
互斥信号量(mutex)
mutex的存在是为了解决优先级反转问题,mutex是ucosiii的一个内核对象,与多值信号量相似,但它是二值的,只能是0或1,所以也要二值信号量,主要用于保护资源。原创 2017-02-19 10:00:32 · 4014 阅读 · 0 评论 -
多值信号量(sem)
补充:ucosiii中的中断服务管理函数延时发布:当把os_cfg.h中的宏OS_CFG_ISR_POST_DEFFERED_EN置1就会使能中断服务管理任务,当ISR(中断服务函数)调用ucosiii提供的post函数时,要发送的数据和发送的目的地都会存入专用的中断队列中,然后使中断队列处理函数进入就绪态,当所有嵌套的ISR都执行完成以后,ucosiii会做任务切换,运行中断队列处理任务原创 2017-02-17 14:55:35 · 1391 阅读 · 0 评论 -
ucosii的中断和时钟
ucosii的中断为了处理任务延时、任务调度等一些和时间有关的事件,任何一个计算机系统都应该有一个系统时钟。与其他计算机系统一样,ucosii的时钟是通过硬件定时器产生定时中断来实现的。应中断请求而运行的程序叫做中断服务子程序,中断服务子程序的入口地址叫做中断向量。对于可剥夺型内核来说,中断服务子程序运行结束之后,系统将会根据情况进行一次任务调度去运行优先级别最高的任务,而并不一定要继原创 2017-02-15 19:34:25 · 2088 阅读 · 0 评论