《μC\OS-III内核实现与应用开发实战指南》[98M]百度网盘|pdf下载|亲测有效
《μC\OS-III内核实现与应用开发实战指南》[98M]百度网盘|pdf下载|亲测有效

μC\OS-III内核实现与应用开发实战指南 pdf下载

出版社 湖北博道图书专营店
出版年 2019-07
页数 390页
装帧 精装
评分 9.3(豆瓣)
8.99¥ 10.99¥

内容简介

本篇主要提供μC\OS-III内核实现与应用开发实战指南电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

基本信息

  • 商品名称:μC\OS-III内核实现与应用开发实战指南(基于STM32)/野火嵌入式系列
  • 作者:编者:刘火良//杨森
  • 定价:129
  • 出版社:机械工业
  • 书号:9787111628248

其他参考信息(以实物为准)

  • 出版时间:2019-07-01
  • 印刷时间:2019-07-01
  • 版次:1
  • 印次:1
  • 开本:16开
  • 包装:平装
  • 页数:505
  • 字数:100千字

内容提要

本书基于野火STM32全系列开发板介绍uC/OS-III内核实现与应用开发,全书分为两部分,第壹部分先教你如何从0到1把uC/OS-III内核写出来,从底层的汇编开始讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现任务延时列表以及时间片等uC/OS的核心知识点;第二部分讲解uC/OS-III内核组件的应用以及使用uC/OS-III进行多任务编程。
    本书内容翔实,案例丰富,配有大量示例代码,适合作为嵌入式领域科技工作者的参考书,也适合相关专业的学生学习参考。

作者简介

杨森,秉火STM32开发板合伙人,嵌入式软件工程师,专注STM32和周边软件开发。著有《STM32库开发实战指南》,已累计印刷余次,广受STM32开发者的喜爱。

目录

前言
引言
部分 从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
0章 时基列表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
1章 时间片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
2章 任务的挂起和恢复124
12.1 实现任务的挂起和恢复124
12.1.1 定义任务的状态124
12.1.2 修改任务控制块125
12.1.3 编写任务挂起和恢复函数126
12.2 main()函数131
12.3 实验现象133
3章 任务的删除134
13.1 实现任务删除134
13.2 main()函数136
13.3 实验现象136
第二部分 C/OS-III内核
应用开发
4章 移植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. 件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
5章 创建任务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
6章 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
7章 任务管理187
17.1 任务的基本概念187
17.2 任务调度器的基本概念188
17.3 任务状态迁移188
17.4 C/OS的任务状态190
17.5 常用的任务函数190
17.5.1 任务挂起函数OS_TaskSuspend()191
17.5.2 任务恢复函数 OSTaskResume()194
17.5.3 任务删除函数OSTaskDel()198
17.5.4 任务延时函数201
17.6 任务的设计要点212
17.7 任务管理实验213
17.8 实验现象222
8章 消息队列223
18.1 消息队列的基本概念223
18.2 消息队列的工作过程224
18.2.1 消息池初始化224
18.2.2 消息队列的运作机制226
18.3 消息队列的阻塞机制227
18.4 消息队列的应用场景227
18.5 消息队列的结构228
18.6 消息队列常用函数230
18.6.1 消息队列创建函数OSQCreate()230
18.6.2 消息队列删除函数OSQDel()233
18.6.3 消息队列发送函数OSQPost()239
18.6.4 消息队列获取函数OSQPend()249
18.7 使用消息队列的注意事项256
18.8 消息队列实验257
18.9 实验现象263
9章 信号量264
19.1 信号量的基本概念264
19.1.1 二值信号量264
19.1.2 计数信号量265
19.2 信号量的应用场景265
19.3 二值信号量的运作机制266
19.4 计数信号量的运作机制267
19.5 信号量控制块267
19.6 信号量函数268
19.6.1 信号量创建函数 OSSemCreate()268
19.6.2 信号量删除函数OSSemDel()271
19.6.3 信号量释放函数OSSemPost()275
19.6.4 信号量获取函数OSSemPend()280
19.7 使用信号量的注意事项285
19.8 信号量实验286
19.8.1 二值信号量同步实验286
19.8.2 计数信号量实验292
19.9 实验现象298
19.9.1 二值信号量同步实验现象298
19.9.2 计数信号量实验现象299
第20章 互斥量300
20.1 互斥量的基本概念300
20.2 互斥量的优先级继承机制300
20.3 互斥量的应用场景303
20.4 互斥量的运作机制303
20.5 互斥量控制块304
20.6 互斥量函数306
20.6.1 创建互斥量函数OSMutexCreate()306
20.6.2 删除互斥量函数OSMutexDel()308
20.6.3 获取互斥量函数OSMutexPend()314
20.6.4 释放互斥量函数OSMutexPost()320
20.7 互斥量相关实验324
20.7.1 模拟优先级翻转实验324
20.7.2 互斥量实验330
20.8 实验现象336
20.8.1 模拟优先级翻转实验现象336
20.8.2 互斥量实验现象336
第21章 事件338
21.1 事件的基本概念338
21.2 事件的应用场景339
21.3 事件的运作机制339
21.4 事件控制块341
21.5 事件函数342
21.5.1 事件创建函数OSFlagCreate()342
21.5.2 事件删除函数OSFlagDel()344
21.5.3 事件设置函数OSFlagPost()348
21.5.4 事件等待函数OSFlagPend()355
21.6 事件实验366
21.7 实验现象371
第22章 软件定时器372
22.1 软件定时器的基本概念372
22.2 软件定时器的应用场景374
22.3 软件定时器的精度374
22.4 软件定时器控制块375
22.5 软件定时器函数376
22.5.1 软件定时器创建函数 OSTmrCreate()376
22.5.2 软件定时器启动函数OSTmrStart()379
22.5.3 软件定时器列表管理384
22.5.4 软件定时器停止函数OSTmrStop()387
22.5.5 软件定时器删除函数OSTmrDel()391
22.6 软件定时器任务393
22.7 软件定时器实验398
22.8 实验现象403
第23章 任务信号量405
23.1 任务信号量的基本概念405
23.2 任务信号量函数406
23.2.1 任务信号量释放函数OSTaskSemPost()406
23.2.2 任务信号量获取函数OSTaskSemPend()410
23.3 任务信号量实验414
23.3.1 任务信号量代替二值信号量实验414
23.3.2 任务信号量代替计数信号量实验419
23.4 实验现象424
23.4.1 任务信号量代替二值信号量实验现象424
23.4.2 任务信号量代替计数信号量实验现象425
第24章 任务消息队列426
24.1 任务消息队列的基本概念426
24.2 任务消息队列函数427
24.2.1 任务消息队列发送函数OSTaskQPost()427
24.2.2 任务消息队列获取函数OSTaskQPend()431
24.3 任务消息队列实验435
24.4 实验现象439
第25章 内存管理440
25.1 内存管理的基本概念440
25.2 内存管理的运作机制441
25.3 内存管理的应用场景443
25.4 内存管理函数443
25.4.1 内存池创建函数OSMemCreate()443
25.4.2 内存申请函数OSMemGet()447
25.4.3 内存释放函数OSMemPut()449
25.5 内存管理实验451
25.6 实验现象456
第26章 中断管理457
26.1 异常与中断的基本概念457
26.1.1 与中断相关的硬件458
26.1.2 与中断相关的术语458
26.2 中断的运作机制459
26.3 中断延迟的概念460
26.4 中断的应用场景461
26.5 ARM Cortex-M的中断管理461
26.6 中断延迟发布463
26.6.1 中断延迟发布的概念463
26.6.2 中断队列控制块465
26.6.3 中断延迟发布任务初始化函数OS_IntQTaskInit()466
26.6.4 中断延迟发布过程函数OS_IntQPost()468
26.6.5 中断延迟发布任务函数OS_IntQTask()471
26.7 中断管理实验475
26.8 实验现象481
第27章 CPU利用率及栈检测统计482
27.1 CPU利用率的基本概念及作用482
27.2 CPU利用率统计初始化483
27.3 栈溢出检测概念及作用485
27.4 栈溢出检测过程487
27.5 统计任务函数OS_StatTask()487
27.6 栈检测函数OSTaskStkChk()493
27.7 任务栈大小的确定496
27.8 CPU利用率及栈检测统计实验496
27.9 实验现象502
附录503