嵌入式系统多任务处理应用开发实战:基于ARM MCU和FreeRTOS内核 pdf下载
选择版本
内容简介
本篇主要提供嵌入式系统多任务处理应用开发实战:基于ARM MCU和FreeRTOS内核电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

本书讲述了如何利用FreeRTOS多任务处理内核让ARM Cortex微控制器进行多任务处理。本书还详细讲解了多任务处理操作系统的各项特性,例如:调度、优先级、邮箱、事件标志和信号量等。本书的重要特色之一是使用非常流行的Clicker 2 for STM32开发板(你可以很轻松地换用其他型号的开发板)和FreeRTOS进行实时项目实战。这些项目包括:LED以不同频率闪烁、7段数码管的刷新显示、用不同任务控制各种传感器的移动机器人、独立控制的多个伺服电机、多任务处理的物联网项目、具有独立键盘输入的温度控制器、具有三项任务(激活、发生器和显示)的随机数发生器、家用报警系统以及泊车管理系统等等。
目 录
译者序
前言
致谢
第1章 微型计算机系统 / 1
1.1 概述 / 1
1.2 微控制器系统 / 1
1.2.1 RAM / 4
1.2.2 ROM / 5
1.2.3 PROM / 5
1.2.4 EPROM / 5
1.2.5 EEPROM / 5
1.2.6 flash EEPROM / 5
1.3 微控制器的特点 / 6
1.3.1 供电电压 / 6
1.3.2 时钟 / 6
1.3.3 定时器 / 6
1.3.4 看门狗 / 6
1.3.5 复位输入 / 7
1.3.6 中断 / 7
1.3.7 欠电压检测器 / 7
1.3.8 模数转换器 / 7
1.3.9 串行输入/输出 / 7
1.3.10 SPI和I2C / 8
1.3.11 LCD驱动器 / 8
1.3.12 模拟比较器 / 8
1.3.13 实时时钟 / 8
1.3.14 睡眠模式 / 8
1.3.15 上电复位 / 8
1.3.16 低功率运行 / 9
1.3.17 灌电流/拉电流能力 / 9
1.3.18 USB接口 / 9
1.3.19 CAN接口 / 9
1.3.20 以太网接口 / 9
1.3.21 Wi-Fi和蓝牙接口 / 9
1.4 微控制器架构 / 9
1.5 小结 / 10
拓展阅读 / 10
第2章 ARM微控制器架构 / 11
2.1 概述 / 11
2.2 ARM微控制器 / 11
2.2.1 Cortex-M / 13
2.2.2 Cortex-R / 14
2.2.3 Cortex-A / 14
2.2.4 Cortex-M处理器对比 / 14
2.2.5 Cortex-M 兼容性 / 15
2.2.6 处理器性能测量 / 15
2.3 STM32F407VGT6微控制器 / 16
2.3.1 STM32F407VGT6的基本特点 / 16
2.3.2 内部模块示意图 / 18
2.3.3 供电 / 20
2.3.4 低功耗模式 / 20
2.3.5 时钟电路 / 20
2.4 通用输入和输出 / 24
2.5 嵌套向量中断控制器 / 26
2.6 外部中断控制器 / 26
2.7 定时器 / 26
2.8 模数转换器 / 26
2.9 内置温度传感器 / 27
2.10 数模转换器 / 27
2.11 复位 / 27
2.12 电特性 / 27
2.13 小结 / 28
拓展阅读 / 28
第3章 ARM Cortex微控制器开发板 / 29
3.1 概述 / 29
3.2 LPC1768 / 29
3.3 STM32 Nucleo系列 / 29
3.4 EasyMx PRO v7 for STM32 / 30
3.5 STM32F4DISCOVERY板 / 31
3.6 mbed应用板 / 31
3.7 EasyMx PRO v7 for Tiva / 32
3.8 MINI-M4 for STM32 / 33
3.9 Clicker 2 for MSP432 / 34
3.10 Tiva EK-TM4C123GXL
LaunchPad / 34
3.11 Fusion for ARM V8 / 35
3.12 Clicker 2 for STM32 / 35
3.13 小结 / 36
拓展阅读 / 36
第4章 Clicker 2 for STM32开发板 / 37
4.1 概述 / 37
4.2 Clicker 2 for STM32硬件 / 37
4.2.1 板载LED / 38
4.2.2 板载按键开关 / 38
4.2.3 复位开关 / 38
4.2.4 供电 / 39
4.2.5 板载mikroBUS插座 / 39
4.2.6 输入/输出引脚 / 40
4.2.7 振荡器 / 41
4.2.8 板载微控制器编程 / 41
4.3 小结 / 42
拓展阅读 / 42
第5章 ARM微控制器编程 / 43
5.1 概述 / 43
5.2 支持ARM微控制器的集成开发
环境 / 43
5.2.1 EWARM / 43
5.2.2 ARM Mbed / 44
5.2.3 MDK-ARM / 44
5.2.4 TrueStudio for STM32 / 45
5.2.5 System Workbench for
STM32 / 45
5.2.6 mikroC Pro for ARM / 45
5.3 小结 / 46
拓展阅读 / 46
第6章 使用mikroC Pro for ARM编程 / 47
6.1 概述 / 47
6.2 mikroC Pro for ARM / 47
6.3 通用输入/输出库 / 49
6.3.1 GPIO_Clk_Enable / 49
6.3.2 GPIO_Clk_Disable / 50
6.3.3 GPIO_Config / 50
6.3.4 GPIO_Set_Pin_Mode / 52
6.3.5 GPIO_Digital_Input / 53
6.3.6 GPIO_Digital_Output / 53
6.3.7 GPIO_Analog_Input / 53
6.3.8 GPIO_Alternate_Function_
Enable / 54
6.4 存储器类型说明符 / 54
6.5 PORT输入/输出 / 54
6.6 按位访问 / 55
6.7 bit数据类型 / 55
6.8 中断和异常 / 55
6.8.1 异常 / 55
6.8.2 中断服务程序 / 56
6.9 创建新项目 / 57
6.10 仿真 / 64
6.11 调试 / 66
6.12 其他mikroC IDE工具 / 67
6.12.1 ASCII表 / 67
6.12.2 GLCD位图编辑器 / 68
6.12.3 HID终端 / 68
6.12.4 中断助手 / 69
6.12.5 LCD定制字符 / 69
6.12.6 7段编辑器 / 69
6.12.7 UDP终端 / 69
6.12.8 USART终端 / 70
6.12.9 USB HID bootloader / 71
6.12.10 统计 / 71
6.12.11 库管理器 / 72
6.12.12 编译列表 / 73
6.12.13 输出文件 / 73
6.12.14 选项窗口 / 73
6.13 小结 / 74
拓展阅读 / 74
第7章 多任务处理简介 / 75
7.1 概述 / 75
7.2 多任务处理内核的优势 / 76
7.3 对实时操作系统的需求 / 76
7.4 任务调度算法 / 77
7.4.1 协作调度 / 77
7.4.2 轮询调度 / 82
7.4.3 抢占调度 / 82
7.4.4 调度算法的目标 / 83
7.4.5 抢占调度与非抢占调度之间的
区别 / 83
7.4.6 其他一些调度算法 / 84
7.5 调度算法的选择 / 85
7.6 小结 / 85
拓展阅读 / 85
第8章 FreeRTOS简介 / 86
8.1 概述 / 86
8.2 FreeRTOS发行版 / 87
8.3 从mikroElektronika网站进行
安装 / 88
8.4 编写项目文件 / 89
8.5 FreeRTOS头文件路径与源文件
路径 / 90
8.6 编译器大小写敏感 / 91
8.7 编译模板程序 / 92
8.8 小结 / 92
拓展阅读 / 92
第9章 使用FreeRTOS函数 / 93
9.1 概述 / 93
9.2 FreeRTOS数据类型 / 93
9.3 FreeRTOS变量命名 / 94
9.4 FreeRTOS函数命名 / 94
9.5 常用宏定义 / 94
9.6 任务状态 / 94
9.7 与任务相关的函数 / 96
9.7.1 创建新任务 / 96
9.7.2 延迟任务 / 97
9.7.3 项目1—让LED每秒闪烁
1次 / 97
9.7.4 项目2—让一个LED每秒闪
烁1次,另一个LED每200ms
闪烁1次 / 100
9.7.5 挂起任务 / 102
9.7.6 让挂起的任务恢复执行 / 102
9.7.7 项目3—挂起和恢复任务 / 103
9.7.8 删除任务 / 105
9.7.9 项目4—让LED闪烁并删除
任务 / 105
9.7.10 获取任务句柄 / 107
9.7.11 定时执行 / 108
9.7.12 滴答计数 / 108
9.7.13 项目5—利用函数vTask-
DelayUntil()让LED闪烁 / 108
9.7.14 任务优先级 / 110
9.7.15 项目6—让LED闪烁和切
换不同优先级的按键开关 / 111
9.7.16 项目7—获取/设置任务优
先级 / 113
9.8 使用液晶显示屏 / 114
9.8.1 HD44780 LCD模块 / 115
9.8.2 连接LCD与Clicker 2 for STM32
开发板 / 116
9.8.3 LCD函数 / 116
9.8.4 项目8—在LCD上
显示文本 / 117
9.9 任务名称、任务数量及滴答计数 / 119
9.10 项目9—在LCD上显示任务
名称、任务数量及滴答计数 / 120
9.11 转而执行另一个优先级相同的
任务 / 122
9.12 取消延迟 / 123
9.13 项目10—7段2位多路复用LED
显示屏计数器 / 123
9.14 项目11—7段4位多路复用LED
显示屏计数器 / 129
9.15 项目12—7段4位多路复用LED
显示屏事件计数器 / 135
9.16 项目13—交通灯控制器 / 136
9.17 项目14—改变LED
闪烁频率 / 144
9.18 项目15—通过USB串口向PC
发送数据 / 148
9.19 项目16—用PC键盘改变LED
闪烁频率 / 154
9.20 任务列表 / 156
9.21 项目17—在PC屏幕上显示
任务列表 / 157
9.22 任务信息 / 159
9.23 项目18—在PC屏幕上显示
任务信息 / 160
9.24 任务状态 / 162
9.25 项目19—在PC屏幕上显示
任务状态 / 163
9.26 任务参数 / 165
9.27 小结 / 165
拓展阅读 / 165
第10章 队列管理 / 166
10.1 全局变量概述 / 166
10.2 为何是队列 / 166
10.3 创建队列并利用队列发送和接
收数据 / 167
10.4 项目20—用PC键盘改变LED
闪烁频率 / 169
10.5 删除队列、为队列命名、重置
队列 / 172
10.6 项目21—使用各种队列函数 / 173
10.7 其他一些队列函数 / 175
10.8 项目22—开关式温度控制器 / 176
10.9 小结 / 185
拓展阅读 / 185
第11章 信号量和互斥量 / 186
11.1 概述 / 186
11.2 创建二进制信号量和互斥量 / 187
11.3 创建计数型信号量 / 187
11.4 删除信号量并获取信号量计数 / 188
11.5 释放和占用信号量 / 188
11.6 项目23—向PC发送内部和
外部温度数据 / 189
11.7 小结 / 194
拓展阅读 / 194
第12章 事件组 / 195
12.1 概述 / 195
12.2 事件标志和事件组 / 195
12.3 创建和删除事件组 / 196
12.4 设置、清除、等待事件组位以及
获取事件组位 / 196
12.5 项目24—向PC发送内部和外
部温度数据 / 198
12.6 项目25—控制LED的闪烁 / 202
12.7 项目26—基于GPS的项目 / 205
12.8 小结 / 212
拓展阅读 / 212
第13章 软件定时器 / 213
13.1 概述 / 213
13.2 创建、删除、启动、停止和重置
定时器 / 214
13.3 修改和获取定时器周期 / 216
13.4 定时器名称和ID / 217
13.5 项目27—反应定时器 / 217
13.6 项目28—生成方波 / 220
13.7 项目29—事件计数器(例如
频率计数器) / 222
13.8 小结 / 225
拓展阅读 / 225
第14章 一些示例项目 / 226
14.1 概述 / 226
14.2 项目30—生成频率可调节的
方波 / 226
14.3 项目31—扫频波形发生器 / 230
14.4 项目32—RGB灯光控制器 / 233
14.5 项目33—带键盘的家庭报警
系统 / 236
14.6 项目34—带蜂鸣器的超声波
泊车 / 244
14.7 项目35—步进电机项目 / 251
14.8 项目36—与Arduino通信 / 262
14.9 小结 / 267
拓展阅读 / 267
第15章 空闲任务和空闲任务钩子 / 268
15.1 概述 / 268
15.2 空闲任务 / 268
15.3 空闲任务钩子函数 / 268
15.4 项目37—显示空闲处理器
......
译 者 序
信息系统互联经历了互联网和移动互联网两个发展时代,现在正站在物联网世界的入口处。物联网为人们展现了这样一幅画卷:计算机、网络、传感器、操作系统和应用软件,将几乎所有设备连接在一起,实现互联互通互操作,构建起一个万物互联的世界,从而提升人类的工作和生活品质。而嵌入式微控制器及其操作系统正是这个世界的基础设施,ARM微控制器与FreeRTOS属于其中的佼佼者。
在这个背景下,虽然越来越多的从业人员愿意将ARM MCU与FreeRTOS作为自己迈入物联网世界的新武器,但又苦于没有系统介绍在ARM平台上利用FreeRTOS进行开发的武功秘籍。为此,机械工业出版社引进了本书以飨读者。全书共包括22章和两个附录,正文可以划分为三个部分:第一部分从第1章到第6章,对微型计算机组成结构、微控制器的基础知识以及ARM微控制器和本书中用到的开发板、开发环境做了总览性的介绍,以便读者对ARM平台有总体了解;第二部分从第7章到第18章,对多任务处理以及FreeRTOS多任务处理开发进行了全面介绍,涵盖队列、多线程、中断、事件、空闲任务、任务通知等方面,每个方面都有一个或若干个实例,通过实例介绍相关函数和开发技巧,以便读者较为全面地掌握FreeRTOS多任务应用开发;第三部分从第19章到第22章,通过4个综合性实例,以接近实际开发的场景让读者全面消化吸收前两部分介绍的知识,并拓展自己在实际工程开发中的设计规划思路。本书内容详尽,实例丰富,贴合从入门到进阶的学习曲线,是一本难得的好书。
需特别说明的是,原版书中的一些电器图形符号与我国现行标准不一致,而为了保持中文版与原版书知识体系的一致性,我们在翻译时未对这些图形符号做更改,请读者阅读时注意。
全书由胡训强(第5~18章及附录)和杨鹏(第1~4章及第19~22章)共同翻译完成。我们很荣幸成为本书的译者,在这里要感谢机械工业出版社的编辑给予我们的信任,正是与编辑的多次交流让我们获益匪浅,也让本书的质量更上一层楼。由于物联网和嵌入式软硬件平台都在不断发展,囿于译者的技术和语言水平,书中难免会存在不准确甚至错误之处,如果读者发现了这样的地方,恳请通过邮箱10185014@qq.com告知我们,在此深表感谢!
最后,感谢所有为本书的出版而付出艰辛劳动的人!
译者
2021年8月于广州