uCOS-III内核实现与应用开发实战指南:基于STM32

    • 带你从0到1写uCOS的核心代码
    • 介绍uCOS-III的移植和内核组件的使用
    • 配套野火全系列STM32开发板

 

描述


如何学习本书

本书与市面上的任何一本uC/OS-III相关的书都不一样,它们要么是翻译官方的参考手册,要么是讲如何使用uC/OS-III,要么是讲uC/OS-III的源码,而本书是教你怎么从0开始把uC/OS-III写出来,既讲了源码实现,也讲了API如何使用。当你拿到本书开始学习的时候你一定会惊讶,原来RTOS的学习并没有那么复杂,反而是那么的有趣,原来自己也可以写OS,成就感立马爆棚。

全书内容循序渐进,不断迭代,前一章都是后一章的基础,必须从头开始阅读,不能进行跳跃式的阅读。在学习的时候务必做到两点:一是不能一味地看书,要把代码和书本结合起来学习,一边看书,一边调试代码。看书倒是很简单,那如何调试代码?即单步执行每一条程序,看看程序的执行流程和执行的效果与自己大脑所想是不是一样;二是在每学完一章之后,必须将配套的例程重写一遍(切记不要复制,哪怕是一个分号,但可以抄),做到举一反三,确保真正理解。在自己写的时候肯定会错漏百出,这个时候要珍惜这些错误,好好调试,这是你提高编程能力的最好的机会。记住,程序不是写出来的,而是调试出来的。


本书的编写风格

本书以uC/OS-III官方源码为蓝本,抽丝剥茧,不断迭代,教你怎么从0开始把uC/OS-III写出来。书中涉及到的数据类型,变量名称、函数名称,文件名称,文件存放的位置都完全按照uC/OS-III官方的方式来实现,当你学完这本书之后可以无缝地切换到原版的uC/OS-III的使用。要注意的是,在实现的过程中,某些函数我会去掉一些形参和一些冗余的代码,只保留核心的功能,但这并不会影响我们学习。注意:本书并不是教你怎么写一个自己的OS,而是教你ucos-iii是怎么写出来的,着重讲解原理实现,当你看完这本书之后,再学习其它RTOS将会跟玩一样。


本书的参考资料和配套硬件

本书支持野火STM32开发板全套系列,学习的时候如果配套这些硬件平台做实验,学习必会达到事半功倍的效果,可以省去中间硬件不一样时移植遇到的各种问题。


本书的技术论坛

如果在学习过程中遇到问题,可以到野火电子论坛www.firebbs.cn发帖交流,开源共享,共同进步。
鉴于水平有限,书中难免有错漏之处,热心的读者也可把勘误发送到论坛上以便改进。祝你学习愉快,uCOS的世界,野火与你同行。

其他信息

配套硬件

野火STM32全系列开发板

出版社

页数

492

ISBN

出版时间

2019-03-01

版次

1

目录

第1章 前言 1
1.1 如何学习本书 1
1.2 本书的参考资料 1
1.3 本书的编写风格 1
1.4 本书的配套硬件 2
1.5 本书的技术论坛 4
第2章 如何学习RTOS 6
2.1 为什么要学习RTOS 6
2.2 如何学习RTOS 6
2.3 如何选择RTOS 7
第一部分:从0到1教你写uCOS内核 8
第3章 新建工程—软件仿真 9
3.1 新建本地工程文件夹 9
3.2 使用KEIL新建工程 10
3.3 在KEIL工程里面新建文件组 11
3.4 在KEIL工程里面添加文件 12
3.5 调试配置 14
第4章 裸机系统与多任务系统 17
4.1 裸机系统 17
4.2 多任务系统 19
第5章 任务的定义与任务切换的实现 21
5.1 本章目标 21
5.2 什么是任务 22
5.3 创建任务 22
5.4 OS系统初始化 29
5.5 启动系统 30
5.6 任务切换 33
5.7 main函数 39
5.8 实验现象 42
第6章 任务时间片运行 46
6.1 SysTick简介 46
6.2 初始化SysTick 47
6.3 编写SysTick中断服务函数 48
6.4 main函数 49
6.5 实验想像 50
第7章 阻塞延时与空闲任务 52
7.1 实现空闲任务 52
7.2 实现阻塞延时 55
7.3 main函数 57
7.4 实验现象 58
第8章 时间戳 60
8.1 时间戳简介 60
8.2 时间戳的实现 60
8.3 时间戳代码讲解 60
8.4 main函数 65
8.5 实验想象 66
第9章 临界段 68
9.1 临界段简介 68
9.2 Cortex-M内核快速关中断指令 68
9.3 关中断 69
9.4 开中断 69
9.5 临界段代码的应用 70
9.6 测量关中断时间 73
9.7 main函数 76
9.8 实验现象 76
第10章 就绪列表 78
10.1 优先级表 78
10.2 就绪列表 85
10.3 main函数 93
10.4 实验现象 93
第11章 支持多优先级 94
11.1 定义优先级相关全局变量 94
11.2 修改OSInit()函数 94
11.3 修改任务控制块TCB 95
11.4 修改OSTaskCreate()函数 95
11.5 修改OS_IdleTaskInit()函数 96
11.6 修改OSStart()函数 97
11.7 修改PendSV_Handler()函数 98
11.8 修改OSTimeDly()函数 98
11.9 修改OSSched()函数 99
11.10 修改OSTimeTick()函数 101
11.11 main函数 102
11.12 实验现象 104
第12章 实现时基列表 106
12.1 实现时基列表 106
12.2 修改OSTimeDly()函数 115
12.3 修改OSTimeTick()函数 116
12.4 main 函数 116
12.5 实验现象 117
第13章 实现时间片 118
13.1 实现时间片 118
13.2 修改OSTimeTick()函数 121
13.3 修改OSTaskCreate()函数 122
13.4 修改OS_IdleTaskInit()函数 123
13.5 main函数 123
13.6 实验现象 125
第14章 任务的挂起和恢复 126
14.1 实现任务的挂起和恢复 126
14.2 main函数 132
14.3 实验现象 133
第15章 任务的删除 134
15.1 实现任务删除 134
15.2 main函数 136
15.3 实验现象 136
第二部分:uCOS III内核应用开发 137
第16章 移植uCOS III到STM32 138
16.1 获取STM32的裸机工程模板 138
16.2 下载uCOS III源码 138
16.3 uCOS III源码文件介绍 142
16.4 移植到STM32工程 147
16.5 按需配置最适的工程 155
16.6 修改app.c 159
16.7 下载验证 160
第17章 创建任务 161
17.1 硬件初始化 161
17.2 创建单任务 162
17.3 下载验证 168
17.4 创建多任务 168
17.5 下载验证 172
第18章 uCOS III的启动流程 174
18.1 万事俱备,只欠东风 174
18.2 小心翼翼,十分谨慎 175
18.3 孰优孰劣 176
18.4 系统的启动 176
第19章 任务管理 188
19.1 任务的基本概念 188
19.2 任务调度器的基本概念 188
19.3 任务状态迁移 189
19.4 uCOS的任务状态 190
19.5 常用的任务函数讲解 191
19.6 任务的设计要点 211
19.7 任务管理实验 212
19.8 实验现象 219
第20章 消息队列 221
20.1 消息队列的基本概念 221
20.2 消息队列工作过程 221
20.3 消息队列的阻塞机制 225
20.4 消息队列的应用场景 226
20.5 消息队列的结构 226
20.6 消息队列常用函数讲解 229
20.7 消息队列使用注意事项 253
20.8 消息队列实验 254
20.9 消息队列实验现象 259
第21章 信号量 261
21.1 信号量基本概念 261
21.2 信号量应用场景 262
21.3 二值信号量运作机制 263
21.4 计数信号量运作机制 264
21.5 信号量控制块 264
21.6 信号量函数接口讲解 266
21.7 使用信号量的注意事项 282
21.8 信号量实验 283
21.9 信号量实验现象 293
第22章 互斥量 296
22.1 互斥量的基本概念 296
22.2 互斥量的优先级继承机制 296
22.3 互斥量应用场景 299
22.4 互斥量运作机制 300
22.5 互斥量控制块 301
22.6 互斥量函数接口讲解 302
22.7 实验 320
22.8 实验现象 330
22.9 总结 331
第23章 事件 333
23.1 事件的基本概念 333
23.2 事件的应用场景 334
23.3 事件运作机制 334
23.4 事件控制块 336
23.5 事件函数接口 337
23.6 事件实验 361
23.7 事件实验现象 365
第24章 软件定时器 367
24.1 软件定时器的基本概念 367
24.2 软件定时器应用场景 369
24.3 软件定时器的精度 369
24.4 软件定时器控制块 370
24.5 软件定时器函数接口讲解 372
24.6 软件定时器任务 387
24.7 软件定时器实验 392
24.8 软件定时器实验现象 396
24.9 总结 397
第25章 任务信号量 398
25.1 任务信号量的基本概念 398
25.2 任务信号量的函数接口讲解 398
25.3 任务信号量实验 407
25.4 任务信号量实验现象 415
第26章 任务消息队列 418
26.1 任务消息队列的基本概念 418
26.2 任务消息队列的函数接口讲解 419
26.3 任务消息队列实验 426
26.4 任务消息队列实验现象 429
第27章 内存管理 431
27.1 内存管理的基本概念 431
27.2 内存管理的运作机制 432
27.3 内存管理的应用场景 433
27.4 内存管理函数接口讲解 434
27.5 内存管理实验 441
27.6 内存管理实验现象 445
第28章 中断管理 447
28.1 异常与中断的基本概念 447
28.2 中断的运作机制 449
28.3 中断延迟的概念 450
28.4 中断的应用场景 451
28.5 中断管理讲解 451
28.6 中断延迟发布 453
28.7 中断管理实验 464
28.8 中断管理实验现象 470
第29章 CPU利用率及堆栈检测统计 471
29.1 CPU利用率的基本概念及作用 471
29.2 CPU利用率统计初始化 471
29.3 堆栈溢出检测概念及作用 474
29.4 堆栈溢出检测过程 476
29.5 统计任务OS_StatTask() 477
29.6 堆栈检测OSTaskStkChk() 482
29.7 任务堆栈大小的确定 484
29.8 CPU利用率及堆栈检测统计实验 485
29.9 CPU利用率及堆栈检测统计实验现象 489
附录 uC/OS的编程风格 491
文件头 491

资料下载

资料百度云下载链接:

 

密码:

在线阅读

在线阅读