电子与嵌入式系统设计丛书 μC OS-III内核实现与应用开发实战指南 基于STM32作者:刘火良,杨森编著出版时间:2019年版内容简介 本书基于野火STM32全系列开发板介绍uC/OS-III内核实现与应用开发,全书分为两部分,第壹部分先教你如何从0到1把uC/OS-III内核写出来,从底层的汇编开始讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现任务延时列表以及时间片等uC/OS的核心知识点;第二部分讲解uC/OS-III内核组件的应用以及使用uC/OS-III进行多任务编程。本书内容翔实,案例丰富,配有大量示例代码,适合作为嵌入式领域科技工作者的参考书,也适合相关专业的学生学习参考。目录前言引言部分 从0到1教你写C/OS内核第1章 新建工程—软件仿真21.1 新建本地工程文件夹21.2 使用KEIL新建工程21.2.1 New Project21.2.2 Select Device For Target31.2.3 Manage Run-Time Environment31.3 在KEIL工程中新建文件组41.4 在KEIL工程中添加文件41.5 调试配置61.5.1 设置软件仿真61.5.2 修改时钟大小61.5.3 添加头文件路径7第2章 裸机系统与多任务系统82.1 裸机系统82.1.1 轮询系统82.1.2 前后台系统92.2 多任务系统10第3章 任务的定义与任务切换133.1 多任务系统中任务的概念143.2 创建任务153.2.1 定义任务栈153.2.2 定义任务函数163.2.3 定义任务控制块173.2.4 实现任务创建函数183.3 操作系统初始化223.4 启动系统243.5 任务切换273.6 main()函数333.7 实验现象37第4章 任务时间片运行394.1 SysTick简介394.2 初始化SysTick404.3 编写SysTick中断服务函数414.4 main()函数424.5 实验现象44第5章 空闲任务与阻塞延时455.1 实现空闲任务455.1.1 定义空闲任务栈455.1.2 定义空闲任务的任务控制块465.1.3 定义空闲任务函数475.1.4 空闲任务初始化475.2 实现阻塞延时485.3 main()函数505.4 实验现象52第6章 时间戳536.1 时间戳简介536.2 时间戳的实现536.3 时间戳代码546.3.1 CPU_Init()函数546.3.2 CPU_TS_Init()函数556.3.3 CPU_TS_TmrInit()函数566.3.4 BSP_CPU_ClkFreq()函数576.3.5 CPU_TS_TmrFreqSet()函数586.3.6 CPU_TS_TmrRd()函数586.3.7 OS_TS_GET()函数596.4 main()函数596.5 实验现象61第7章 临界段627.1 临界段简介627.2 Cortex-M内核快速关中断指令627.3 关中断637.4 开中断637.5 临界段代码的应用647.6 测量关中断时间687.6.1 测量关中断时间初始化687.6.2 测量关中断时间697.6.3 获取关中断时间707.7 main()函数717.8 实验现象71第8章 就绪列表728.1 优先级表的定义及函数728.2 就绪列表的定义及函数808.3 main()函数888.4 实验现象88第9章 多优先级899.1 定义优先级相关全局变量899.2 修改OSInit()函数899.3 修改任务控制块909.4 修改OSTaskCreate()函数909.5 修改OS_IdleTaskInit()函数929.6 修改OSStart()函数939.7 修改PendSV_Handler()函数939.8 修改OSTimeDly()函数949.9 修改OSSched()函数959.10 修改OSTimeTick()函数979.11 main()函数989.12 实验现象101第10章 时基列表10310.1 实现时基列表10310.1.1 定义时基列表变量10310.1.2 修改任务控制块10410.1.3 实现时基列表相关函数10610.2 修改OSTimeDly()函数11310.3 修改OSTimeTick()函数11410.4 main()函数11410.5 实验现象114第11章 时间片11511.1 实现时间片11511.1.1 修改任务控制块11511.1.2 实现时间片调度函数11611.2 修改OSTimeTick()函数11811.3 修改OSTaskCreate()函数11811.4 修改OS_IdleTaskInit()函数12011.5 main()函数12011.6 实验现象122第12章 任务的挂起和恢复12412.1 实现任务的挂起和恢复12412.1.1 定义任务的状态12412.1.2 修改任务控制块12512.1.3 编写任务挂起和恢复函数12612.2 main()函数13112.3 实验现象133第13章 任务的删除13413.1 实现任务删除13413.2 main()函数13613.3 实验现象136第二部分 C/OS-III内核应用开发第14章 移植C/OS-III到STM3213814.1 获取STM32的裸机工程模板13814.2 下载C/OS-III源码13814.3 C/OS-III源码文件介绍14114.3.1 EvalBoards14114.3.2 C-CPU14114.3.3 C-LIB14314.3.4 C/OS-III14314.4 移植到STM32工程14514.4.1 在工程中添加文件分组14514.4.2 添加文件到对应分组14514.4.3 添加头文件路径到工程中14614.4.4 具体的工程文件修改14714.4.5 修改源码中的bsp.c与bsp.h文件14914.5 按需配置适合的工程15114.5.1 os_cfg.h15114.5.2 cpu_cfg.h15314.5.3 os_cfg_app.h15414.6 修改app.c15514.7 下载验证157第15章 创建任务15815.1 硬件初始化15815.2 创建单任务16015.2.1 定义任务栈16015.2.2 定义任务控制块16015.2.3 定义任务主体函数16015.2.4 创建任务16115.2.5 启动任务16315.2.6 app.c16315.3 下载验证单任务16615.4 创建多任务16615.5 下载验证多任务171第16章 C/OS-III的启动流程17216.1 “万事俱备,只欠东风”法17216.2 “小心翼翼,十分谨慎”法17316.3 两种方法的适用情况17516.4 系统的启动17516.4.1 系统初始化17516.4.2 CPU初始化17916.4.3 SysTick初始化18216.4.4 内存初始化18316.4.5 OSStart()函数18316.4.6 app.c184第17章 任务管理18717.1 任务的基本概念18717.2 任务调度器的基本概念18817.3 上一篇: 电子与嵌入式系统设计丛书 LWIP应用开发实战指南 基于STM32 (中国)刘火良,杨森 2019年版 下一篇: 电子与嵌入式系统设计丛书 通信IC设计 上 李庆华著 2016年版