您当前的位置:首页 > 电子与嵌入式系统设计丛书 μC OS-III内核实现与应用开发实战指南 基于STM32 刘火良,杨森编著 2019年版 > 下载地址1
电子与嵌入式系统设计丛书 μC OS-III内核实现与应用开发实战指南 基于STM32 刘火良,杨森编著 2019年版
- 名 称:电子与嵌入式系统设计丛书 μC OS-III内核实现与应用开发实战指南 基于STM32 刘火良,杨森编著 2019年版 - 下载地址1
- 类 别:电子信息
- 下载地址:[下载地址1]
- 提 取 码:
- 浏览次数:3
新闻评论(共有 0 条评论) |
资料介绍
电子与嵌入式系统设计丛书 μ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章 新建工程—软件仿真2
1.1 新建本地工程文件夹2
1.2 使用KEIL新建工程2
1.2.1 New Project2
1.2.2 Select Device For Target3
1.2.3 Manage Run-Time Environment3
1.3 在KEIL工程中新建文件组4
1.4 在KEIL工程中添加文件4
1.5 调试配置6
1.5.1 设置软件仿真6
1.5.2 修改时钟大小6
1.5.3 添加头文件路径7
第2章 裸机系统与多任务系统8
2.1 裸机系统8
2.1.1 轮询系统8
2.1.2 前后台系统9
2.2 多任务系统10
第3章 任务的定义与任务切换13
3.1 多任务系统中任务的概念14
3.2 创建任务15
3.2.1 定义任务栈15
3.2.2 定义任务函数16
3.2.3 定义任务控制块17
3.2.4 实现任务创建函数18
3.3 操作系统初始化22
3.4 启动系统24
3.5 任务切换27
3.6 main()函数33
3.7 实验现象37
第4章 任务时间片运行39
4.1 SysTick简介39
4.2 初始化SysTick40
4.3 编写SysTick中断服务函数41
4.4 main()函数42
4.5 实验现象44
第5章 空闲任务与阻塞延时45
5.1 实现空闲任务45
5.1.1 定义空闲任务栈45
5.1.2 定义空闲任务的任务控制块46
5.1.3 定义空闲任务函数47
5.1.4 空闲任务初始化47
5.2 实现阻塞延时48
5.3 main()函数50
5.4 实验现象52
第6章 时间戳53
6.1 时间戳简介53
6.2 时间戳的实现53
6.3 时间戳代码54
6.3.1 CPU_Init()函数54
6.3.2 CPU_TS_Init()函数55
6.3.3 CPU_TS_TmrInit()函数56
6.3.4 BSP_CPU_ClkFreq()函数57
6.3.5 CPU_TS_TmrFreqSet()函数58
6.3.6 CPU_TS_TmrRd()函数58
6.3.7 OS_TS_GET()函数59
6.4 main()函数59
6.5 实验现象61
第7章 临界段62
7.1 临界段简介62
7.2 Cortex-M内核快速关中断指令62
7.3 关中断63
7.4 开中断63
7.5 临界段代码的应用64
7.6 测量关中断时间68
7.6.1 测量关中断时间初始化68
7.6.2 测量关中断时间69
7.6.3 获取关中断时间70
7.7 main()函数71
7.8 实验现象71
第8章 就绪列表72
8.1 优先级表的定义及函数72
8.2 就绪列表的定义及函数80
8.3 main()函数88
8.4 实验现象88
第9章 多优先级89
9.1 定义优先级相关全局变量89
9.2 修改OSInit()函数89
9.3 修改任务控制块90
9.4 修改OSTaskCreate()函数90
9.5 修改OS_IdleTaskInit()函数92
9.6 修改OSStart()函数93
9.7 修改PendSV_Handler()函数93
9.8 修改OSTimeDly()函数94
9.9 修改OSSched()函数95
9.10 修改OSTimeTick()函数97
9.11 main()函数98
9.12 实验现象101
第10章 时基列表103
10.1 实现时基列表103
10.1.1 定义时基列表变量103
10.1.2 修改任务控制块104
10.1.3 实现时基列表相关函数106
10.2 修改OSTimeDly()函数113
10.3 修改OSTimeTick()函数114
10.4 main()函数114
10.5 实验现象114
第11章 时间片115
11.1 实现时间片115
11.1.1 修改任务控制块115
11.1.2 实现时间片调度函数116
11.2 修改OSTimeTick()函数118
11.3 修改OSTaskCreate()函数118
11.4 修改OS_IdleTaskInit()函数120
11.5 main()函数120
11.6 实验现象122
第12章 任务的挂起和恢复124
12.1 实现任务的挂起和恢复124
12.1.1 定义任务的状态124
12.1.2 修改任务控制块125
12.1.3 编写任务挂起和恢复函数126
12.2 main()函数131
12.3 实验现象133
第13章 任务的删除134
13.1 实现任务删除134
13.2 main()函数136
13.3 实验现象136
第二部分 C/OS-III内核
应用开发
第14章 移植C/OS-III到STM32138
14.1 获取STM32的裸机工程模板138
14.2 下载C/OS-III源码138
14.3 C/OS-III源码文件介绍141
14.3.1 EvalBoards141
14.3.2 C-CPU141
14.3.3 C-LIB143
14.3.4 C/OS-III143
14.4 移植到STM32工程145
14.4.1 在工程中添加文件分组145
14.4.2 添加文件到对应分组145
14.4.3 添加头文件路径到工程中146
14.4.4 具体的工程文件修改147
14.4.5 修改源码中的bsp.c与bsp.h文件149
14.5 按需配置适合的工程151
14.5.1 os_cfg.h151
14.5.2 cpu_cfg.h153
14.5.3 os_cfg_app.h154
14.6 修改app.c155
14.7 下载验证157
第15章 创建任务158
15.1 硬件初始化158
15.2 创建单任务160
15.2.1 定义任务栈160
15.2.2 定义任务控制块160
15.2.3 定义任务主体函数160
15.2.4 创建任务161
15.2.5 启动任务163
15.2.6 app.c163
15.3 下载验证单任务166
15.4 创建多任务166
15.5 下载验证多任务171
第16章 C/OS-III的启动流程172
16.1 “万事俱备,只欠东风”法172
16.2 “小心翼翼,十分谨慎”法173
16.3 两种方法的适用情况175
16.4 系统的启动175
16.4.1 系统初始化175
16.4.2 CPU初始化179
16.4.3 SysTick初始化182
16.4.4 内存初始化183
16.4.5 OSStart()函数183
16.4.6 app.c184
第17章 任务管理187
17.1 任务的基本概念187
17.2 任务调度器的基本概念188
17.3
作者:刘火良,杨森编著
出版时间:2019年版
内容简介
本书基于野火STM32全系列开发板介绍uC/OS-III内核实现与应用开发,全书分为两部分,第壹部分先教你如何从0到1把uC/OS-III内核写出来,从底层的汇编开始讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现任务延时列表以及时间片等uC/OS的核心知识点;第二部分讲解uC/OS-III内核组件的应用以及使用uC/OS-III进行多任务编程。本书内容翔实,案例丰富,配有大量示例代码,适合作为嵌入式领域科技工作者的参考书,也适合相关专业的学生学习参考。
目录
前言
引言
部分 从0到1教你写
C/OS内核
第1章 新建工程—软件仿真2
1.1 新建本地工程文件夹2
1.2 使用KEIL新建工程2
1.2.1 New Project2
1.2.2 Select Device For Target3
1.2.3 Manage Run-Time Environment3
1.3 在KEIL工程中新建文件组4
1.4 在KEIL工程中添加文件4
1.5 调试配置6
1.5.1 设置软件仿真6
1.5.2 修改时钟大小6
1.5.3 添加头文件路径7
第2章 裸机系统与多任务系统8
2.1 裸机系统8
2.1.1 轮询系统8
2.1.2 前后台系统9
2.2 多任务系统10
第3章 任务的定义与任务切换13
3.1 多任务系统中任务的概念14
3.2 创建任务15
3.2.1 定义任务栈15
3.2.2 定义任务函数16
3.2.3 定义任务控制块17
3.2.4 实现任务创建函数18
3.3 操作系统初始化22
3.4 启动系统24
3.5 任务切换27
3.6 main()函数33
3.7 实验现象37
第4章 任务时间片运行39
4.1 SysTick简介39
4.2 初始化SysTick40
4.3 编写SysTick中断服务函数41
4.4 main()函数42
4.5 实验现象44
第5章 空闲任务与阻塞延时45
5.1 实现空闲任务45
5.1.1 定义空闲任务栈45
5.1.2 定义空闲任务的任务控制块46
5.1.3 定义空闲任务函数47
5.1.4 空闲任务初始化47
5.2 实现阻塞延时48
5.3 main()函数50
5.4 实验现象52
第6章 时间戳53
6.1 时间戳简介53
6.2 时间戳的实现53
6.3 时间戳代码54
6.3.1 CPU_Init()函数54
6.3.2 CPU_TS_Init()函数55
6.3.3 CPU_TS_TmrInit()函数56
6.3.4 BSP_CPU_ClkFreq()函数57
6.3.5 CPU_TS_TmrFreqSet()函数58
6.3.6 CPU_TS_TmrRd()函数58
6.3.7 OS_TS_GET()函数59
6.4 main()函数59
6.5 实验现象61
第7章 临界段62
7.1 临界段简介62
7.2 Cortex-M内核快速关中断指令62
7.3 关中断63
7.4 开中断63
7.5 临界段代码的应用64
7.6 测量关中断时间68
7.6.1 测量关中断时间初始化68
7.6.2 测量关中断时间69
7.6.3 获取关中断时间70
7.7 main()函数71
7.8 实验现象71
第8章 就绪列表72
8.1 优先级表的定义及函数72
8.2 就绪列表的定义及函数80
8.3 main()函数88
8.4 实验现象88
第9章 多优先级89
9.1 定义优先级相关全局变量89
9.2 修改OSInit()函数89
9.3 修改任务控制块90
9.4 修改OSTaskCreate()函数90
9.5 修改OS_IdleTaskInit()函数92
9.6 修改OSStart()函数93
9.7 修改PendSV_Handler()函数93
9.8 修改OSTimeDly()函数94
9.9 修改OSSched()函数95
9.10 修改OSTimeTick()函数97
9.11 main()函数98
9.12 实验现象101
第10章 时基列表103
10.1 实现时基列表103
10.1.1 定义时基列表变量103
10.1.2 修改任务控制块104
10.1.3 实现时基列表相关函数106
10.2 修改OSTimeDly()函数113
10.3 修改OSTimeTick()函数114
10.4 main()函数114
10.5 实验现象114
第11章 时间片115
11.1 实现时间片115
11.1.1 修改任务控制块115
11.1.2 实现时间片调度函数116
11.2 修改OSTimeTick()函数118
11.3 修改OSTaskCreate()函数118
11.4 修改OS_IdleTaskInit()函数120
11.5 main()函数120
11.6 实验现象122
第12章 任务的挂起和恢复124
12.1 实现任务的挂起和恢复124
12.1.1 定义任务的状态124
12.1.2 修改任务控制块125
12.1.3 编写任务挂起和恢复函数126
12.2 main()函数131
12.3 实验现象133
第13章 任务的删除134
13.1 实现任务删除134
13.2 main()函数136
13.3 实验现象136
第二部分 C/OS-III内核
应用开发
第14章 移植C/OS-III到STM32138
14.1 获取STM32的裸机工程模板138
14.2 下载C/OS-III源码138
14.3 C/OS-III源码文件介绍141
14.3.1 EvalBoards141
14.3.2 C-CPU141
14.3.3 C-LIB143
14.3.4 C/OS-III143
14.4 移植到STM32工程145
14.4.1 在工程中添加文件分组145
14.4.2 添加文件到对应分组145
14.4.3 添加头文件路径到工程中146
14.4.4 具体的工程文件修改147
14.4.5 修改源码中的bsp.c与bsp.h文件149
14.5 按需配置适合的工程151
14.5.1 os_cfg.h151
14.5.2 cpu_cfg.h153
14.5.3 os_cfg_app.h154
14.6 修改app.c155
14.7 下载验证157
第15章 创建任务158
15.1 硬件初始化158
15.2 创建单任务160
15.2.1 定义任务栈160
15.2.2 定义任务控制块160
15.2.3 定义任务主体函数160
15.2.4 创建任务161
15.2.5 启动任务163
15.2.6 app.c163
15.3 下载验证单任务166
15.4 创建多任务166
15.5 下载验证多任务171
第16章 C/OS-III的启动流程172
16.1 “万事俱备,只欠东风”法172
16.2 “小心翼翼,十分谨慎”法173
16.3 两种方法的适用情况175
16.4 系统的启动175
16.4.1 系统初始化175
16.4.2 CPU初始化179
16.4.3 SysTick初始化182
16.4.4 内存初始化183
16.4.5 OSStart()函数183
16.4.6 app.c184
第17章 任务管理187
17.1 任务的基本概念187
17.2 任务调度器的基本概念188
17.3