STM32 uC/OS-III使用教程
文章平均质量分 92
烟雨江南、
平时博客都是笔记,有错误忘大佬指出
展开
-
UCOS-III 互斥量
互斥量本质是一种特殊的二值信号量,也不具备传递数据的功能。与二值信号量不同的是:它具有优先级继承机制、支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源的独占式处理。任意时刻互斥量的状态只有两种,开锁或闭锁。当互斥量被任务持有时,该互斥量处于闭锁状态,这个任务获得互斥量的所有权。当该任务释放这个互斥量时,该互斥量处于开锁状态,任务失去该互斥量的所有权。原创 2022-10-16 20:24:46 · 2315 阅读 · 0 评论 -
UC/OS-III 信号量
此外,系统还有很多资源,我们也可以使用计数信号量进行资源管理,信号量的计数值表示系统中可用的资源数目,任务必须先获取到信号量才能获取资源访问权,当信号量的计数值为零时表示系统没有可用的资源,但是要注意,在使用完资源的时候必须归还信号量,否则当计数值为0的时候任务就无法访问该资源了。在多任务系统中,我们经常会使用这个二值信号量。注:cnt参数:表示初始化时候资源的个数或事件是否发生标志,二值信号量的时候,这个值一般为 0 或者为 1,而如果信号量作为计数信号量的时候,这个值一般定义为初始资源的个数。原创 2022-10-15 12:04:14 · 1268 阅读 · 0 评论 -
UC/OS-III 消息队列
在app.c中定义//声明消息队列。原创 2022-10-09 21:22:57 · 2111 阅读 · 0 评论 -
UC/OS-III 任务管理(包含任务函数)
任务的延时在实际中运用特别多,因为需要暂停一个任务,让任务放弃 CPU,延时结束后再继续运行该任务,如果任务中没有阻塞的话,比该任务优先级低的任务则无法得到CPU 的使用权,就无法运行。任务先等待一个事件或信号的发生(无限期等待),还没等待到就被其他任务挂起,挂起的效果叠加,当且仅当任务等待到事件或信号并且挂起被恢复了,该任务才能够再次运行。该状态表明任务正在执行,此时它占用处理器,UCOS 调度器选择运行的永远是处于最高优先级的就绪态任务,当任务被运行的一刻,它的任务状态就变成了运行态,原创 2022-10-04 22:29:38 · 1138 阅读 · 0 评论 -
任务创建 app.c代码讲解
第一步我们需要在app.c中为任务定义一个任务控制块,通常我们称这个任务控制块为任务的身份证。在 C 中上,任务控制块就是一个结构体,里面有非常多的成员,这些成员共同描述了任务的全部信息。/** TCB(任务控制块)//声明起始任务块 /*声明用户自定义任务块*/ static OS_TCB AppTaskLed1TCB;任务的栈占用的是MCU 内部的 RAM,当任务越多的时候,需要使用的栈空间就越大,即需要使用的 RAM空间就越多。一个 MCU 能够支持多少任务,就得看你的 RAM 空间有多少。原创 2022-09-29 19:35:35 · 780 阅读 · 2 评论