[套装书]嵌入式计算与机电一体化技术:基于PIC32微控制器+RT-Thread内核实现与应用开发实战指南:基于STM32(2册)

作者
[美]凯文·M. 林奇(Kevin M. Lynch) 尼古拉斯·马丘克(Nicholas Marchuk) 马修·L. 艾尔文(Matthew L. Elwin)刘火良 杨森
丛书名
电子电气工程师技术丛书
出版社
机械工业出版社
ISBN
9781911041745
简要
简介
内容简介书籍计算机书籍 ---------------------------嵌入式计算与机电一体化技术:基于PIC32微控制器--------------------------- 本书是美国西北大学机电一体化系列课程的教材,选择PIC32MX795F512H微控制器 + NU32开发板,基础知识部分重点讲解PIC32的硬件、C语言编程以及与传感器和执行机构的接口,应用部分关注机电一体化技术,包括传感器、传动装置和电机的选择等。各章节全面融合PIC32参考手册、数据表、XC32 C编译器用户指南、Harmony帮助文档等内容,并配有丰富的教辅资源,适合PIC32初学者、Arduino爱好者以及对传感器和嵌入式控制感兴趣的技术人员阅读。 ---------------------------RT-Thread内核实现与应用开发实战指南:基于STM32--------------------------- 本书基于野火STM32全系列开发板介绍RT-Thread内核实现与应用开发,全书分为两部分:第一部分教你如何从0到1把RT-Thread内核写出来,从底层的汇编开始讲解线程如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现定时器以及时间片等RT-Thread的核心知识点;第二部分则讲解RT-Thread内核组件的应用以及如何使用RT-Thread进行多线程编程。 本书内容翔实,案例丰富,配有大量示例代码,适合作为嵌入式领域科技工作者的参考书,也适合相关专业学生学习参考。
目录



---------------------------嵌入式计算与机电一体化技术:基于PIC32微控制器---------------------------


前 言
第一部分 快速入门
第1章 快速入门 2
1.1 编程资源 2
1.2 编译bootloader程序 5
1.3 编译第一个程序 6
1.4 加载第一个程序 7
1.5 使用make命令 8
1.6 小结 12
延伸阅读 12
第二部分 基础知识
第2章 硬件 14
2.1 PIC32微控制器 14
2.2 NU32开发板 23
2.3 小结 26
2.4 练习题 26
延伸阅读 28
第3章 软件 29
3.1 虚拟内存映射 29
3.2 示例:simplePIC.c 30
3.3 编译过程 31
3.4 PIC32复位过程 33
3.5 理解simplePIC.c 34
3.6 引导加载程序与独立程序 43
3.7 编译小结 44
3.8 实用命令行工具 46
3.9 小结 47
3.10 练习题 47
延伸阅读 48
第4章 函数库 49
4.1 创建talkingPIC 50
4.2 NU32函数库 51
4.3 引导加载程序 52
4.4 LCD函数库 53
4.5 Microchip函数库 55
4.6 自定义函数库 56
4.7 小结 56
4.8 练习题 57
延伸阅读 57
第5章 执行时间和存储空间 58
5.1 编译器优化 58
5.2 执行时间和反汇编文件 59
5.3 存储空间和映射文件 66
5.4 小结 70
5.5 练习题 71
延伸阅读 75
第6章 中断 76
6.1 概述 76
6.2 详述 77
6.3 配置和使用中断的步骤 84
6.4 示例代码 85
6.5 小结 92
6.6 练习题 93
延伸阅读 95
第三部分 外设参考
第7章 数字输入和输出 98
7.1 概述 98
7.2 详述 100
7.3 示例代码 102
7.4 小结 103
7.5 练习题 104
延伸阅读 104
第8章 计数器/定时器 105
8.1 概述 105
8.2 详述 107
8.3 示例代码 110
8.4 小结 113
8.5 练习题 113
延伸阅读 113
第9章 输出比较 114
9.1 概述 114
9.2 详述 115
9.3 示例代码 118
9.4 小结 121
9.5 练习题 121
延伸阅读 123
第10章 模拟输入 124
10.1 概述 124
10.2 详述 127
10.3 示例代码 130
10.4 小结 135
10.5 练习题 136
延伸阅读 136
第11章 UART 137
11.1 概述 137
11.2 详述 139
11.3 示例代码 141
11.4 使用XBee模块进行无线通信 152
11.5 小结 152
11.6 练习题 153
延伸阅读 153
第12章 SPI通信 154
12.1 概述 154
12.2 详述 155
12.3 示例代码 158
12.4 小结 165
12.5 练习题 166
延伸阅读 166
第13章 I2C通信 167
13.1 概述 167
13.2 详述 169
13.3 示例代码 171
13.4 小结 186
13.5 练习题 186
延伸阅读 186
第14章 并行主端口 187
14.1 概述 187
14.2 详述 188
14.3 示例代码 189
14.4 小结 194
14.5 练习题 194
延伸阅读 194
第15章 输入捕获 195
15.1 概述 195
15.2 详述 196
15.3 示例代码 197
15.4 小结 199
15.5 练习题 199
延伸阅读 199
第16章 比较器 200
16.1 概述 200
16.2 详述 200
16.3 示例代码 202
16.4 小结 204
16.5 练习题 204
延伸阅读 204
第17章 休眠、空闲和看门狗定时器 205
17.1 概述 205
17.2 详述 206
17.3 示例代码 207
17.4 小结 209
17.5 练习题 209
延伸阅读 209
第18章 闪速存储器 210
18.1 概述 210
18.2 详述 211
18.3 示例代码 212
18.4 小结 217
18.5 练习题 217
延伸阅读 217
第19章 控制器局域网络 218
19.1 概述 218
19.2 详述 220
19.3 示例代码 228
19.4 小结 232
19.5 练习题 233
延伸阅读 233
第20章 Harmony模块及其USB接口应用 234
20.1 概述 234
20.2 框架 235
20.3 PLIB函数库 237
20.4 Harmony概念 239
20.5 驱动程序 240
20.6 系统服务程序 251
20.7 程序结构 255
20.8 USB 260
20.9 小结 277
20.10 练习题 277
延伸阅读 277
第四部分 机电一体化应用
第21章 传感器 280
21.1 接触传感器:按钮和开关 280
21.2 光敏传感器 281
21.3 转动关节的角度 284
21.4 移动关节的位置 288
21.5 加速度和角速度:陀螺仪、加速度计和惯性测量装置 289
21.6 磁场感应:霍尔效应传感器 291
21.7 距离 292
21.8 压力 293
21.9 温度 294
21.10 电流 295
21.11 GPS 296
21.12 练习题 296
延伸阅读 297
第22章 数字信号处理 298
22.1 采样信号和混叠 298
22.2 离散傅里叶变换 300
22.3 有限脉冲响应数字滤波器 306
22.4 无限脉冲响应数字滤波器 319
22.5 基于FFT的滤波器 320
22.6 PIC32的DSP函数库 322
22.7 练习题 330
延伸阅读 331
第23章 PID反馈控制 332
23.1 PID控制器 333
23.2 PID控制器的变体 335
23.3 增益调节的经验方法 336
23.4 基于模型的控制 337
23.5 小结 338
23.6 练习题 339
延伸阅读 340
第24章 LED亮度的反馈控制 341
24.1 电路的接线和测试 342
24.2 通过OC1为LED供电 343
24.3 生成开环PWM波形 343
24.4 与MATLAB建立通信 344
24.5 在MATLAB中利用数据绘图 344
24.6 写入LCD屏幕 348
24.7 读取ADC 348
24.8 PI控制 348
24.9 其他特性 349
24.10 小结 349
24.11 练习题 349
第25章 有刷永磁直流电机 350
25.1 电机的物理知识 350
25.2 控制方程 354
25.3 速度-转矩曲线 355
25.4 摩擦力和电机效率 358
25.5 电机绕组和电机常数 360
25.6 其他电机特性 361
25.7 电机数据表 362
25.8 小结 365
25.9 练习题 366
延伸阅读 370
第26章 传动装置和电机选择 371
26.1 传动装置 371
26.2 电机和减速器的选择 375
26.3 小结 377
26.4 练习题 377
延伸阅读 378
第27章 直流电机控制 379
27.1 H桥和脉宽调制 379
27.2 直流电机的运动控制 387
27.3 小结 391
27.4 练习题 391
延伸阅读 393
第28章 电机控制项目 394
28.1 硬件 394
28.2 软件概述 395
28.3 软件开发技巧 400
28.4 基本步骤 403
28.5 扩展设计 419
28.6 小结 420
28.7 练习题 420
第29章 其他执行机构 421
29.1 螺线管 421
29.2 扬声器和音圈执行机构 422
29.3 RC伺服电机 423
29.4 步进电机 424
29.5 无刷直流电机 428
29.6 线性无刷电机 439
29.7 小结 439
29.8 练习题 439
延伸阅读 440



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


推荐序
前言
引言
第一部分 从0到1教你写RT-Thread内核
第1章 新建RT-Thread工程——软件仿真 2
1.1 新建本地工程文件夹 2
1.2 使用KEIL新建工程 3
1.2.1 New Project 3
1.2.2 Select Device for Target 3
1.2.3 Manage Run-Time Environment 4
1.3 在KEIL工程中新建文件组 5
1.4 在KEIL工程中添加文件 6
1.5 调试配置 7
1.5.1 设置软件仿真 7
1.5.2 修改时钟大小 8
1.5.3 添加头文件路径 9
第2章 裸机系统与多线程系统 10
2.1 裸机系统 10
2.1.1 轮询系统 10
2.1.2 前后台系统 11
2.2 多线程系统 12
第3章 线程的定义与线程切换的实现 15
3.1 什么是线程 16
3.2 创建线程 17
3.2.1 定义线程栈 17
3.2.2 定义线程函数 19
3.2.3 定义线程控制块 20
3.2.4 实现线程创建函数 20
3.3 实现就绪列表 30
3.3.1 定义就绪列表 30
3.3.2 将线程插入就绪列表 30
3.4 实现调度器 31
3.4.1 调度器初始化 32
3.4.2 启动调度器 33
3.4.3 第一次线程切换 34
3.4.4 系统调度 41
3.5 main()函数 44
3.6 实验现象 47
第4章 临界段的保护 50
4.1 什么是临界段 50
4.2 Cortex-M内核快速关中断指令 50
4.3 关中断 51
4.4 开中断 51
4.5 临界段代码的应用 52
4.6 实验现象 56
第5章 对象容器 57
5.1 什么是对象 57
5.1.1 对象枚举的定义 57
5.1.2 对象数据类型的定义 57
5.1.3 在线程控制块中添加对象成员 58
5.2 什么是容器 59
5.3 容器的接口实现 63
5.3.1 获取指定类型的对象信息 64
5.3.2 对象初始化 64
5.3.3 调用对象初始化函数 67
5.4 实验现象 67
第6章 空闲线程与阻塞延时 68
6.1 实现空闲线程 68
6.1.1 定义空闲线程的栈 68
6.1.2 定义空闲线程的线程控制块 69
6.1.3 定义空闲线程函数 69
6.1.4 空闲线程初始化 69
6.2 实现阻塞延时 70
6.3 SysTick_Handler()中断服务函数 73
6.4 main()函数 77
6.5 实验现象 80
第7章 多优先级 82
7.1 就绪列表 82
7.1.1 线程就绪优先级组 82
7.1.2 线程优先级表 86
7.2 修改代码以支持多优先级 88
7.2.1 修改线程控制块 88
7.2.2 修改调度器初始化函数rt_system_scheduler_init() 90
7.2.3 修改线程初始化函数rt_thread_init() 91
7.2.4 添加线程启动函数rt_thread_startup() 92
7.2.5 修改空闲线程初始化函数rt_thread_idle_init() 93
7.2.6 修改启动系统调度器函数rt_system_scheduler_start() 94
7.2.7 修改系统调度函数rt_schedule() 95
7.2.8 修改阻塞延时函数rt_thread_delay() 98
7.2.9 修改时基更新函数rt_tick_increase() 98
7.3 main()函数 99
7.4 实验现象 102
第8章 定时器 103
8.1 实现定时器 103
8.1.1 系统定时器列表 103
8.1.2 系统定时器列表初始化 104
8.1.3 定义定时器结构体 104
8.1.4 在线程控制块中内置定时器 105
8.1.5 定时器初始化函数 106
8.1.6 定时器删除函数 108
8.1.7 定时器停止函数 108
8.1.8 定时器控制函数 109
8.1.9 定时器启动函数 110
8.1.10 定时器扫描函数 115
8.2 修改代码以支持定时器 118
8.2.1 修改线程初始化函数 118
8.2.2 修改线程延时函数 119
8.2.3 修改系统时基更新函数 121
8.2.4 修改main.c文件 122
8.3 实验现象 126
第9章 时间片 127
9.1 实现时间片 127
9.1.1 在线程控制块中添加时间片相关成员 127
9.1.2 修改线程初始化函数 128
9.1.3 修改空闲线程初始化函数 129
9.1.4 修改系统时基更新函数 129
9.2 修改main.c文件 131
9.3 实验现象 135
第二部分 RT-Thread 内核应用开发
第10章 移植RT-Thread到STM32 138
10.1 获取STM32的裸机工程模板 138
10.2 下载RT-Thread Nano源码 138
10.3 安装RT-Thread Package 139
10.4 向裸机工程中添加RT-Thread源码 140
10.4.1 复制RT-Thread Package到裸机工程根 140
10.4.2 复制rtconfig.h文件到User文件夹 141
10.4.3 复制board.c文件到User文件夹 141
10.4.4 rt-thread文件夹内容简介 141
10.4.5 添加RT-Thread源码到工程组文件夹 143
10.5 rtconfig.h文件 145
10.5.1 rtconfig.h文件内容讲解 145
10.5.2 rtconfig.h文件修改 152
10.6 board.c文件 156
10.6.1 board.c文件内容讲解 156
10.6.2 board.c文件修改 160
10.7 添加core_delay.c和core_delay.h文件 167
10.8 修改main.c 171
10.9 下载验证 172
第11章 线程 173
11.1 硬件初始化 173
11.2 创建单线程——SRAM静态内存 175
11.2.1 定义线程函数 175
11.2.2 定义线程栈 176
11.2.3 定义线程控制块 176
11.2.4 初始化线程 176
11.2.5 启动线程 177
11.2.6 main.c文件内容 177
11.3 下载验证SRAM静态内存单线程 179
11.4 创建单线程——SRAM动态内存 179
11.4.1 动态内存空间堆的来源 180
11.4.2 定义线程函数 181
11.4.3 定义线程栈 181
11.4.4 定义线程控制块指针 181
11.4.5 创建线程 181
11.4.6 启动线程 182
11.4.7 main.c文件内容 182
11.5 下载验证SRAM动态内存单线程 184
11.6 创建多线程——SRAM动态内存 185
11.7 下载验证SRAM动态内存多线程 187
第12章 重映射串口到rt_kprintf()函数 188
12.1 rt_kprintf()函数定义 188
12.2 自定义rt_hw_console_output()函数 189
12.3 测试rt_kprintf()函数 191
12.3.1 硬件初始化 191
12.3.2 编写rt_kprintf()测试代码 192
12.3.3 下载验证 192
第13章 RT-Thread的启动流程 194
13.1 “万事俱备,只欠东风”法 194
13.2 “小心翼翼,十分谨慎”法 195
13.3 两种方法的适用情况 197
13.4 RT-Thread的启动流程 197
13.4.1 $Sub$$main()函数 198
13.4.2 rtthread_startup()函数 199
13.4.3 rt_application_init()函数 201
13.4.4 $Super$$main()函数 202
13.4.5 main()函数 203
第14章 线程管理 205
14.1 线程的基本概念 205
14.2 线程调度器的基本概念 205
14.3 线程状态的概念 206
14.4 线程状态迁移 206
14.5 常用的线程函数 207
14.5.1 线程挂起函数rt_thread_suspend() 207
14.5.2 线程恢复函数rt_thread_resume() 209
14.6 线程的设计要点 210
14.7 线程管理实验 212
14.8 实验现象 215
第15章 消息队列 216
15.1 消息队列的基本概念 216
15.2 消息队列的运作机制 217
15.3 消息队列的阻塞机制 218
15.4 消息队列的应用场景 218
15.5 消息队列控制块 218
15.6 消息队列函数 219
15.6.1 消息队列创建函数rt_mq_create() 219
15.6.2 消息队列删除函数rt_mq_delete() 221
15.6.3 消息队列发送消息函数rt_mq_send() 223
15.6.4 消息队列接收消息函数rt_mq_recv() 226
15.7 消息队列使用注意事项 229
15.8 消息队列实验 230
15.9 实验现象 233
第16章 信号量 234
16.1 信号量的基本概念 234
16.2 二值信号量的应用场景 235
16.3 二值信号量的运作机制 236
16.4 计数型信号量的运作机制 236
16.5 信号量控制块 237
16.6 信号量函数 237
16.6.1 信号量创建函数rt_sem_create() 238
16.6.2 信号量删除函数rt_sem_delete() 239
16.6.3 信号量释放函数rt_sem_release() 240
16.6.4 信号量获取函数rt_sem_take() 242
16.7 信号量实验 245
16.7.1 二值信号量同步实验 245
16.7.2 计数型信号量实验 248
16.8 实验现象 251
16.8.1 二值信号量同步实验现象 251
16.8.2 计数型信号量实验现象 252
第17章 互斥量 253
17.1 互斥量的基本概念 253
17.2 互斥量的优先级继承机制 253
17.3 互斥量的应用场景 256
17.4 互斥量的运作机制 256
17.5 互斥量控制块 257
17.6 互斥量函数 258
17.6.1 互斥量创建函数rt_mutex_create() 258
17.6.2 互斥量删除函数rt_mutex_delete() 260
17.6.3 互斥量释放函数rt_mutex_release() 261
17.6.4 互斥量获取函数rt_mutex_take() 264
17.7 互斥量使用注意事项 268
17.8 互斥量实验 268
17.9 实验现象 271
第18章 事件 272
18.1 事件的基本概念 272
18.2 事件的应用场景 273
18.3 事件的运作机制 273
18.4 事件控制块 275
18.5 事件函数 275
18.5.1 事件创建函数rt_event_create() 275
18.5.2 事件删除函数rt_event_delete() 276
18.5.3 事件发送函数rt_event_send() 277
18.5.4 事件接收函数rt_event_recv() 281
18.6 事件实验 285
18.7 实验现象 288
第19章 软件定时器 289
19.1 软件定时器的基本概念 289
19.2 软件定时器的应用场景 290
19.3 软件定时器的精度 291
19.4 软件定时器的运作机制 291
19.5 定时器超时函数 293
19.6 软件定时器的使用 297
19.7 软件定时器实验 299
19.8 实验现象 302
第20章 邮箱 303
20.1 邮箱的基本概念 303
20.2 邮箱的运作机制 304
20.3 邮箱的应用场景 305
20.4 邮箱的应用技巧 305
20.5 邮箱控制块 306
20.6 邮箱函数 306
20.6.1 邮箱创建函数rt_mb_create() 306
20.6.2 邮箱删除函数rt_mb_delete() 308
20.6.3 邮箱邮件发送函数rt_mb_send_wait()(阻塞) 310
20.6.4 邮箱邮件发送函数rt_mb_send ()(非阻塞) 315
20.6.5 邮箱邮件接收函数rt_mb_recv() 316
20.7 邮箱实验 320
20.8 实验现象 324
第21章 内存管理 325
21.1 内存管理的基本概念 325
21.2 内存管理的运作机制 327
21.2.1 静态内存管理 327
21.2.2 动态内存管理 328
21.3 内存管理的应用场景 330
21.4 静态内存管理函数 331
21.4.1 静态内存控制块 331
21.4.2 静态内存创建函数rt_mp_create() 332
21.4.3 静态内存删除函数rt_mp_delete() 335
21.4.4 静态内存初始化函数rt_mp_init() 338
21.4.5 静态内存申请函数rt_mp_alloc() 340
21.4.6 静态内存释放函数rt_mp_free() 344
21.5 动态内存管理函数 346
21.5.1 系统堆内存初始化函数rt_system_heap_init() 346
21.5.2 系统堆内存申请函数rt_malloc() 350
21.5.3 系统堆内存释放函数rt_free() 354
21.6 内存管理实验 357
21.6.1 静态内存管理实验 357
21.6.2 动态内存管理实验 361
21.7 实验现象 364
21.7.1 静态内存管理实验现象 364
21.7.2 动态内存管理实验现象 364
第22章 中断管理 366
22.1 异常与中断的基本概念 366
22.1.1 中断 367
22.1.2 和中断相关的术语 367
22.2 中断管理的运作机制 368
22.3 中断延迟的概念 369
22.4 中断管理的应用场景 370
22.5 ARM Cortex-M的中断管理 370
22.6 中断管理实验 372
22.7 实验现象 377
第23章 双向链表 378
23.1 双向链表的基本概念 378
23.2 双向链表函数 378
23.2.1 链表初始化函数rt_list_init() 378
23.2.2 向链表中插入节点 379
23.2.3 从链表删除节点函数rt_list_remove() 381
23.3 双向链表实验 382
23.4 实验现象 385
第24章 CPU利用率统计 387
24.1 CPU利用率的基本概念 387
24.2 CPU利用率的作用 387
24.3 CPU利用率统计实现 388
24.4 CPU利用率实验 392
24.5 实验现象 394
附录 参考资料和配套硬件 396




有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4