μC/OS-III基础版
文章平均质量分 94
本专栏为μC/OS-III基础知识,乃笔者阅读野火教程的心得。
YunB西风英
一个放笔记的小书架 , 用云端代替榆木脑瓜 ∠( °ω°)/
展开
-
UCOSIII章节介绍
在嵌入式的学习中,对于较高性能的MCU,不可缺少的一环就是挑选操作系统。操作系统分为硬实时系统与软实时系统,硬实时系统的代表之一就是`μC/OS-III`,为了方便命名文件,经常写作`UCOSIII`。本系列就是针对`UCOSIII`系统的学习,从配置Keil到移植代码,从内核的讲解到整个系统的功能分析,循序渐进地掌握UCOSIII源码原创 2024-04-28 18:08:38 · 52 阅读 · 0 评论 -
(学习日记)2024.04.18:UCOSIII第四十六节:CPU利用率及栈检测统计
六十、UCOSIII:CPU利用率及栈检测统计1、CPU利用率的基本概念及作用2、CPU利用率统计初始化3、栈溢出检测概念及作用4、栈溢出检测过程5、统计任务OS_StatTask()6、栈检测OSTaskStkChk()7、任务栈大小的确定8、CPU利用率及栈检测统计实验9、CPU利用率及栈检测统计实验现象原创 2024-04-13 16:45:23 · 1209 阅读 · 0 评论 -
(学习日记)2024.04.17:UCOSIII第四十五节:中断管理
五十九、UCOSIII:中断管理1、异常与中断的基本概念1. 异常的定义2. 中断的定义3. 中断的介绍4. 和中断相关的名词解释2、中断的运作机制1. 任务的上下文2. 中断服务函数处理上下文3、中断延迟的概念4、中断的应用场景5、中断管理讲解6、中断延迟发布1. 中断延迟发布的概念中断延时发布中断直接发布2. 中断队列控制块3. 中断延迟发布任务初始化OS_IntQTaskInit()4. 中断延迟发布过程OS_IntQPost()5. 中断延迟发布任务OS_Int原创 2024-04-13 15:31:42 · 1027 阅读 · 0 评论 -
(学习日记)2024.04.16:UCOSIII第四十四节:内存管理
五十八、UCOSIII:内存管理1、内存管理的基本概念2、内存管理的运作机制3、内存管理的应用场景4、内存管理函数接口讲解1. 内存池创建函数2. 内存申请函数OSMemGet()3. 内存释放函数5、内存管理实验6、内存管理实验现象原创 2024-04-12 15:59:12 · 1591 阅读 · 0 评论 -
(学习日记)2024.04.15:UCOSIII第四十三节:任务消息队列
五十七、UCOSIII:任务消息队列1、任务消息队列的基本概念2、任务消息队列的函数接口讲解1. 任务消息队列发送函数OSTaskQPost()2. 任务消息队列获取函数OSTaskQPend()3、任务消息队列实验4、任务消息队列实验现象原创 2024-04-12 15:36:06 · 789 阅读 · 0 评论 -
(学习日记)2024.04.14:UCOSIII第四十二节:任务信号量
五十六、UCOSIII:任务信号量1、任务信号量的基本概念2、任务信号量的函数接口讲解1. 任务信号量释放函数OSTaskSemPost()2. 获取任务信号量函数OSTaskSemPend()3、任务信号量实验1、任务信号量代替二值信号量实验2. 任务信号量代替二值信号量实验现象3. 任务信号量代替计数信号量实验4. 任务信号量代替计数信号量实验原创 2024-04-12 15:00:41 · 610 阅读 · 0 评论 -
(学习日记)2024.04.13:UCOSIII第四十一节:软件定时器实验
五十五、UCOSIII:软件定时器实验1、软件定时器任务2、软件定时器实验3、软件定时器实验现象4、总结原创 2024-04-12 14:21:07 · 921 阅读 · 0 评论 -
(学习日记)2024.04.12:UCOSIII第四十节:软件定时器函数接口讲解
五十四、UCOSIII:软件定时器函数接口讲解1、创建软件定时器函数OSTmrCreate()2、启动软件定时器函数OSTmrStart()1. OSTmrStart()2. OS_TmrLink()3、软件定时器列表管理1. 软件定时器列表2. OS_TmrUnlink()4、 停止定时器函数OSTmrStop()5、删除软件定时器函数OSTmrDel()原创 2024-04-11 22:46:06 · 902 阅读 · 0 评论 -
(学习日记)2024.04.11:UCOSIII第三十九节:软件定时器
五十三、UCOSIII:软件定时器1、软件定时器的基本概念2、软件定时器应用场景3、软件定时器的精度4、软件定时器控制块原创 2024-04-08 23:28:38 · 1321 阅读 · 0 评论 -
(学习日记)2024.04.10:UCOSIII第三十八节:事件实验
五十二、UCOSIII:事件实验1、实验设计与代码2、实验现象原创 2024-04-08 17:25:19 · 435 阅读 · 0 评论 -
(学习日记)2024.04.09:UCOSIII第三十七节:事件函数接口
五十一、UCOSIII:事件函数接口1、事件创建函数OSFlagCreate()2、事件删除函数OSFlagDel()3、事件设置函数OSFlagPost()1. OSFlagPost()2. OS_FlagPost()4、事件等待函数OSFlagPend()原创 2024-04-08 17:20:03 · 638 阅读 · 0 评论 -
(学习日记)2024.04.08:UCOSIII第三十六节:事件
五十、UCOSIII:事件1、事件的基本概念2、事件的应用场景3、事件运作机制4、事件控制块原创 2024-04-06 11:10:04 · 641 阅读 · 0 评论 -
(学习日记)2024.04.07:UCOSIII第三十五节:互斥量实验
四十九、UCOSIII:互斥量实验1、模拟优先级翻转实验2、模拟优先级翻转实验现象3、互斥量实验4、互斥量实验现象原创 2024-04-06 10:57:02 · 606 阅读 · 0 评论 -
(学习日记)2024.04.06:UCOSIII第三十四节:互斥量函数接口讲解
四十八、UCOSIII:互斥量函数接口讲解1、创建互斥量函数OSMutexCreate()2、删除互斥量函数OSMutexDel()3、获取互斥量函数OSMutexPend()4、释放互斥量函数OSMutexPost()原创 2024-04-06 10:49:35 · 959 阅读 · 0 评论 -
(学习日记)2024.04.05:UCOSIII第三十三节:互斥量
四十七、UCOSIII:互斥量1、互斥量的基本概念2、互斥量的优先级继承机制1. 优先级翻转2. 优先级继承3、互斥量应用场景4、互斥量运作机制5、互斥量控制块原创 2024-04-06 09:25:19 · 708 阅读 · 0 评论 -
(学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
四十六、UCOSIII:计数信号量实验1、实验设计2、信号量实验现象原创 2024-04-06 08:44:27 · 885 阅读 · 0 评论 -
(学习日记)2024.04.03:UCOSIII第三十一节:信号量函数接口讲解
四十五、UCOSIII:信号量函数接口讲解1、创建信号量函数OSSemCreate()2、信号量删除函数OSSemDel()3、信号量释放函数OSSemPost()1. OSSemPost()2. OS_SemPost()源码4、信号量获取函数OSSemPend()5、使用信号量的注意事项原创 2024-04-06 00:40:01 · 828 阅读 · 0 评论 -
(学习日记)2024.04.02:UCOSIII第三十节:信号量
四十四、UCOSIII:信号量1、信号量基本概念1. 二值信号量2. 计数信号量2、信号量应用场景1. 为什么叫二值信号量呢?2. 二值信号量在任务与任务中同步的应用场景3. 计数信号量的应用场景3、二值信号量运作机制4、计数信号量运作机制5、信号量控制块原创 2024-04-06 00:37:23 · 1390 阅读 · 0 评论 -
(学习日记)2024.04.01:UCOSIII第二十九节:消息队列实验(待续)
四十三、UCOSIII:消息队列实验1、消息队列使用注意事项2、消息队列实验3、消息队列实验现象原创 2024-04-04 08:00:59 · 783 阅读 · 0 评论 -
(学习日记)2024.03.31:UCOSIII第二十八节:消息队列常用函数
四十二、UCOSIII:消息队列常用函数1、创建消息队列函数OSQCreate()2、消息队列删除函数OSQDel()3、消息队列发送函数OSQPost()1. OSQPost()函数2. OS_QPost()函数3. OS_MsgQPut()函数4. OS_Post()函数4、消息队列获取函数OSQPend()1. OSQPend()函数2. OS_MsgQGet()函数3. OS_Pend()函数原创 2024-04-04 07:59:11 · 702 阅读 · 0 评论 -
(学习日记)2024.03.30:UCOSIII第二十七节:消息队列
四十一、UCOSIII:消息队列1、消息队列的基本概念2、消息队列工作过程1. 消息池初始化2. 消息队列的运作机制3、消息队列的阻塞机制4、消息队列的应用场景5、消息队列的结构原创 2024-04-02 13:54:52 · 1187 阅读 · 0 评论 -
(学习日记)2024.03.29:UCOSIII第二十六节:任务的设计要点
四十、UCOSIII:任务的设计要点1、任务运行的上下文环境1. 中断服务函数2. 任务3. 空闲任务:4. 任务的执行时间原创 2024-04-02 13:50:23 · 700 阅读 · 0 评论 -
(学习日记)2024.03.28:UCOSIII第二十五节:常见任务管理函数
三十九、UCOSIII:常见任务管理函数1、任务挂起函数OS_TaskSuspend()2、任务恢复函数OSTaskResume()3、删除任务函数OSTaskDel()4、任务延时函数1. OSTimeDly()2. OSTimeDlyHMSM()原创 2024-04-02 13:47:24 · 967 阅读 · 0 评论 -
(学习日记)2024.03.27:UCOSIII第二十四节:任务状态
三十八、UCOSIII:任务状态1、任务的基本概念2、任务调度器的基本概念3、任务状态迁移4、μC/OS的任务状态原创 2024-03-30 00:17:11 · 914 阅读 · 0 评论 -
(学习日记)2024.03.26:UCOSIII第二十三节:系统启动流程概览(持续更新)
三十七、UCOSIII:系统启动流程概览1、运行启动文件2、系统初始化1. 初始化钩子函数相关的代码2. 把中断嵌套计数器设为03. 设置多任务处理器的状态4. 将锁定计数器、当前任务指针、最高优先级任务指针、当前优先级数值、最高优先级数值、优先级记录数值设为05. 初始化优先级列表6. 初始化就绪列表7. 初始化任务管理器8. 初始化空闲任务9. 初始化时钟节拍任务10. 操作系统配置初始化3、定义启动任务1. 板级硬件进行初始化2. CPU初始化3. 时钟初始化4. 内原创 2024-03-29 23:12:58 · 819 阅读 · 0 评论 -
(学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
三十六、UCOSIII:系统启动流程详解1、运行启动文件2、主流程 main3、系统初始化函数OSInit()1. 空闲任务的初始化2. 空闲任务的定义3. 时钟节拍任务的初始化4、启动任务AppTaskStart()1. 时间戳初始化2. SysTick初始化3. 内存初始化5、任务调度器启动函数OSStart()原创 2024-03-29 23:11:43 · 968 阅读 · 0 评论 -
(学习日记)2024.03.24:UCOSIII第二十一节:创建任务:LED红绿蓝切换
三十五、UCOSIII:创建任务1、硬件初始化2、创建单任务1. 定义任务栈2. 定义任务控制块3. 定义任务主体函数4. 创建任务5. 启动任务6. app.c全貌3、下载验证4、创建多任务5、下载验证原创 2024-03-28 20:13:23 · 1008 阅读 · 0 评论 -
(学习日记)2024.03.18:UCOSIII第二十节:移植到STM32
三十四、移植到STM321、在工程中添加文件分组2、添加文件到对应分组3、添加头文件路径到工程中4、具体的工程文件修改5、修改源码中的bsp.c与bsp.h文件6、按需配置最适的工程1. os_cfg.h2. cpu_cfg.h3. os_cfg_app.h7、修改app.c原创 2024-03-18 16:31:00 · 875 阅读 · 0 评论 -
(学习日记)2024.03.17:UCOSIII第十九节:源码介绍
2024.03.18三十三、UCOSIII:源码介绍1、下载源码2、μC/OS-III源码文件介绍1. EvalBoards2. uC-CPU- cpu_c.h文件- cpu_c.c文件与cpu_a.asm文件- cpu_core.c- cpu_core.h- cpu_def.h3. uC-LIB4. μC/OS-III- os_cpu.h- oc_cpu_a.asm- os_cpu_c.c原创 2024-03-18 14:32:14 · 1038 阅读 · 0 评论 -
(学习日记)2024.03.16:UCOSIII第十八节:任务的删除
三十二、UCOSIII:任务的删除1、实现任务删除2、main()函数原创 2024-03-17 19:56:12 · 388 阅读 · 0 评论 -
(学习日记)2024.03.15:UCOSIII第十七节:任务的挂起和恢复
2024.03.15三十一、UCOSIII:任务的挂起和恢复1、实现任务的挂起和恢复1. 定义任务的状态2. 修改任务控制块TCB3. 编写任务挂起和恢复函数- OSTaskSuspend()函数- OSTaskResume()函数2、main()函数3、实验现象原创 2024-03-17 18:32:55 · 864 阅读 · 0 评论 -
(学习日记)2024.03.14:UCOSIII第十六节:时间片
2024.03.14三十、UCOSIII:时间片1、实现时间片1. 修改任务TCB2. 实现时间片调度OS_SchedRoundRobin()函数2、修改OSTimeTick()函数3、修改OSTaskCreate()函数4、修改OS_IdleTaskInit()函数5、main()函数6、实验现象原创 2024-03-17 18:01:28 · 956 阅读 · 0 评论 -
(学习日记)2024.03.13:UCOSIII第十五节:基于时基列表的时延操作(持续更新)
2024.03.13二十九、UCOSIII:基于时基列表的时延操作1、配置时钟中断时间2、创建任务3、任务放置到就绪列表中,并优先级排队4、将任务插入时基列表1. 确认时延2.对任务进行排序3. 确认插入时基列表哪个成员4. 对就绪列表的操作原创 2024-03-16 20:41:18 · 1186 阅读 · 0 评论 -
(学习日记)2024.03.12:UCOSIII第十四节:时基列表
2024.03.12二十八、UCOSIII:时基列表1、实现时基列表1. 定义时基列表变量2. 修改任务控制块TCB2、实现时基列表相关函数1. OS_TickListInit()函数2. OS_TickListInsert()函数3. OS_TickListRemove()函数4. OS_TickListUpdate()函数3、修改OSTimeDly()函数4、修改OSTimeTick()函数原创 2024-03-16 09:31:47 · 1123 阅读 · 0 评论 -
(学习日记)2024.03.11:UCOSIII第十三节:使用优先级的流程 (持续更新)
2024.03.10二十五、UCOSIII:使用优先级的流程1、设置优先级2、把任务插入优先级列表3、把任务插入就绪列表4、获得当前最高优先级5、调用最高优先级任务原创 2024-03-13 17:32:05 · 1532 阅读 · 0 评论 -
(学习日记)2024.03.10:UCOSIII第十二节:多优先级
2024.03.11二十六、UCOSIII:多优先级1、定义优先级相关全局变量2、修改OSInit()函数3、修改任务控制块TCB4、修改OSTaskCreate()函数5、修改OS_IdleTaskInit()函数6、修改OSStart()函数7、修改PendSV_Handler()函数8、修改OSTimeDly()函数9、修改OSSched()函数10、修改OSTimeTick()函数二十七、UCOSIII:修改main()函数1、修改部分:2、实验现象原创 2024-03-13 17:32:57 · 832 阅读 · 0 评论 -
(学习日记)2024.03.09:UCOSIII第十一节:就绪列表
2024.03.09二十四、UCOSIII:就绪列表1、优先级表2、 优先级表函数讲解1. OS_PrioInit()函数2. OS_PrioInsert()函数3. OS_PrioRemove()函数4. OS_PrioGetHighest()函数3、就绪列表4、就绪列表函数讲解1. OS_RdyListInit()函数2. OS_RdyListInsertHead()函数3. OS_RdyListInsertTail()函数4. OS_RdyListInsert()函数原创 2024-03-13 16:43:20 · 1051 阅读 · 0 评论 -
(学习日记)2024.03.08:UCOSIII第十节:临界段
2024.03.08二十三、UCOSIII:临界段1、临界段简介2、Cortex-M内核快速关中断指令3、关中断4、开中断5、临界段代码的应用6、测量关中断时间1. 测量关中断时间初始化2. 测量最大关中断时间3. 获取最大关中断时间原创 2024-03-11 09:32:38 · 933 阅读 · 0 评论 -
(学习日记)2024.03.07:UCOSIII第九节:时间戳
2024.03.06二十一、UCOSIII:时间戳1、时间戳简介2、时间戳的实现3、时间戳代码讲解1. CPU_Init()函数2. CPU_TS_Init()函数3. CPU_TS_TmrInit()函数4. BSP_CPU_ClkFreq()函数5. CPU_TS_TmrFreqSet()函数6. CPU_TS_TmrRd()函数7. OS_TS_GET()函数二十二、UCOSIII:修改main()函数1、修改代码2、仿真原创 2024-03-07 14:13:12 · 792 阅读 · 0 评论 -
(学习日记)2024.03.06:UCOSIII第八节:空闲任务+阻塞延时+main函数修改
2024.03.05十八、UCOSIII:空闲任务1、阻塞延时与空闲任务介绍2、定义空闲任务栈3、定义空闲任务TCB4、定义空闲任务函数5、空闲任务初始化十九、UCOSIII:实现阻塞延时1、阻塞延时函数2、记录任务需要延时的时间3、任务切换的部分修改二十、UCOSIII:修改main()函数1、程序代码2、编译调试原创 2024-03-05 20:10:49 · 1026 阅读 · 0 评论