uC/OS-III 学习笔记
文章平均质量分 95
uC/OS-III 学习笔记
Mount256
这个作者很懒,什么都没留下…
展开
-
uCOS-III 学习记录(11)——任务管理
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 15、16 和 21 章。从本文开始,是 uCOS 的 API 应用。文章目录1 任务状态2 修改和添加相关代码2.1 修改 TCB(os.h)2.2 添加宏定义和数据类型3 任务管理的函数3.1 任务挂起函数 OSTaskSuspend()(os_task.c)3.2 任务恢复函数 OSTaskResume()(os_task.c)3.3 任务删除函数 OSTaskDel()(os_task.c)4 任务管理的应用4原创 2022-02-13 11:42:30 · 470 阅读 · 0 评论 -
uCOS-III 学习记录(10)——时间片轮转调度
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 14 章。文章目录0 时间片轮转调度的意义1 修改任务控制块 TCB(os.h)2 时间片轮转调度函数 OS_SchedRoundRobin()(os_core.c)3 修改相关代码3.1 SysTick 中断发起后调用 OSTimeTick()(os_time.c)3.2 任务创建函数 OSTaskCreate()(os_task.c)3.3 空闲任务初始化函数 OS_IdleTaskInit()(os_core.c)原创 2022-02-12 20:36:19 · 1449 阅读 · 0 评论 -
uCOS-III 学习记录(9)——时基列表
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 13 章。文章目录1 数据类型定义和宏定义1.1 时基列表相关宏定义和全局变量(os_cfg_app.h/c & os.h)1.2 时基列表定义(os.h)1.3 修改 TCB 定义(os.h)2 时基列表的相关函数2.1 初始化时基列表 OS_TickListInit()(os_tick.c)2.2 往时基列表插入任务控制块 OS_TickListInsert()(os_tick.c)2.3 在时基列表删除一个原创 2022-02-11 12:20:38 · 722 阅读 · 0 评论 -
uCOS-III 学习记录(8)——支持多优先级
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 12 章。文章目录0 数据类型定义和宏定义0.1 临界段宏定义(os.h)0.2 任务控制块 TCB 定义(os.h)0.3 任务就绪列表定义(os.h)0.4 优先级相关变量定义(os.h)1 系统初始化 OSInit()(os_core.c)2 任务创建函数 OSTaskCreate()(os_task.c)2.1 初始化任务控制块 OS_TaskInitTCB()(os_task.c)3 空闲任务初始化 OS_Id原创 2022-02-08 17:25:20 · 387 阅读 · 0 评论 -
uCOS-III 学习记录(7)——就绪列表
喜气洋洋过虎年!预祝各位明年会有更大的进步!参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 11 章。文章目录1 就绪列表和任务控制块的定义(os.h)1.1 任务控制块链表 OS_TCB1.2 就绪列表 OS_RDY_LIST1.3 全局变量定义1.4 结构全图2 初始化就绪列表 OS_RdyListInit()(os_core.c)3 将 TCB 节点从链表头部移到链表尾部 OS_RdyListMoveHeadToTail()(os_core.c)3.1 链表头原创 2022-02-01 00:15:00 · 1982 阅读 · 7 评论 -
uCOS-III 学习记录(6)——优先级表
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 11 章。文章目录1 优先级表的定义 OSPrioTbl(os_prio.c)1.1 CPU_DATA——一个数组元素的数据长度为多少?(cpu.h)1.2 OS_PRIO_TBL_SIZE——数组有多大?(os.h)1.2.1 OS_CFG_PRIO_MAX——支持多少个优先级?(os_cfg.h)1.2.2 DEF_INT_CPU_NBR_BITS——CPU 整型数据有多少位?(cpu_def.h)1.3 优先级表的原创 2022-01-30 13:50:28 · 2137 阅读 · 0 评论 -
uCOS-III 学习记录(5)——临界段
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 10 章。文章目录1 临界段2 临界段的保护2.1 Cortex-M 内核的中断指令2.2 开中断和关中断2.2.1 关中断 CPU_SR_Save()(cpu_a.asm)2.2.2 开中断 CPU_SR_Restore()(cpu_a.asm)2.2.3 宏定义封装(cpu.h)2.3 临界段保护的应用2.3.1 一层临界段的应用2.3.2 多层临界段的应用3 测量关中断时间1 临界段临界段,又叫做临界区。对于多原创 2022-01-28 14:36:26 · 1274 阅读 · 0 评论 -
uCOS-III 学习记录(4)——时间戳
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 9 章。文章目录1 时间戳2 DWT 外设2.1 DWT 外设简介2.2 初始化 DWT 的步骤2.3 DWT 外设的宏定义(cpu_core.c)3 CPU 和时间戳的初始化3.1 时间戳的相关定义(cpu_core.h)3.1.1 通过宏定义开启/关闭时间戳功能3.1.2 时间戳的数据类型定义3.1.3 时间戳的全局变量定义——CPU_TS_TmrFreq_Hz3.2 时间戳的初始化3.2.1 CPU 初始化函数 C原创 2022-01-27 16:50:35 · 994 阅读 · 0 评论 -
uCOS-III 学习记录(3)——空闲任务和阻塞延时
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 8 章。文章目录1. 空闲任务1.1 数据类型定义1.1.1 空闲任务 TCB (os.h)1.1.2 空闲任务栈 (os\_cfg\_app.c)1.2 空闲任务函数 OS_IdleTask (os_core.c)1.3 空闲任务初始化函数 (os_core.c)2 阻塞延时2.1 数据类型定义2.2 阻塞延时函数 OSTimeDly (os_time.c)2.3 SysTick 发起中断后调用 OSTimeTick原创 2022-01-19 20:36:24 · 1335 阅读 · 0 评论 -
uCOS-III 学习记录(2)——任务时间片运行
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 7 章。文章目录1 初始化 SysTick1.1 SysTick 初始化函数 OS_CPU_SysTickInit (os\_cpu\_c.c)1.2 SysTick 中断服务程序 SysTick_Handler (os\_cpu\_c.c)1.3 OSTimeTick (os_time.c)2 实现任务按一定时间间隔切换的功能2.1 任务的创建和 OS 启动 (app.c)2.2 开中断和关中断函数 CPU_IntEn原创 2022-01-19 01:00:00 · 1509 阅读 · 1 评论 -
uCOS-III 学习记录(1)——任务的创建、切换和OS的启动
参考内容:《[野火]uCOS-III内核实现与应用开发实战指南——基于STM32》第 6 章。文章目录前排提醒0 数据类型声明0.1 任务控制块(OS_TCB)(os.h)0.2 就绪列表(OS_RDY_LIST)(os.h)0.3 系统状态 (OSRunning) (os.h)1 任务的创建1.1 任务创建函数 OSTaskCreate() (os_task.c)1.1.1 任务栈创建函数 OSTaskStkInit() (os_cpu_c.c)2 内核OS的启动2.1 系统初始化 OSInit() (原创 2022-01-18 11:11:52 · 1004 阅读 · 2 评论