在工业4.0时代,嵌入式系统作为芯片和软件的结合体,在工业自动化、机电控制、移动设备、通信、汽车等领域发挥着不可替代的作用。本书系统介绍了嵌入式系统硬件与软件的设计,并简要介绍了多个应用实例,使读者全面了解嵌入式系统的内部结构、设计思路和开发过程。书中配有适量习题,紧扣本书主旨,帮助读者巩固重要的知识点。
本书适宜机械、自动控制、电子等相关专业的本科学生使用,也可供相关专业技术人员参考。
俞建峰,江南大学机械工程学院教授,博士生导师。无锡市青年科协会员、江苏省农业工程学会理事、中国电机工程学会会员、中国化工学会过滤与分离专业委员会委员、中国食品加工机械标准化技术委员。曾获江苏省科技进步三等奖2项(排第三)、2020年江苏省普通高等学校本科优秀毕业设计(论文)指导教师、2019年度江南大学荣智权奖教金。2004年7月毕业于上海交通大学机械与动力工程学院,获机械电子工程专业工学博士学位。讲授《嵌入式系统与人工智能》、《过程设备设计》、《机械有限元设计》、《过程装备学科前沿》等课程。主要研究领域为电机嵌入式系统、工业互联与智能传感、机器人运动控制、食品加工装备。主持或参加各类科研课题30余项,授权国家发明专利34项,出版编著5部。
第1章绪 论1
1.1嵌入式系统1
1.1.1嵌入式系统定义1
1.1.2嵌入式系统结构2
1.1.3嵌入式系统硬件组成3
1.1.4嵌入式系统软件组成5
1.1.5嵌入式操作系统线程、进程和协程7
1.2嵌入式处理器8
1.2.1嵌入式处理器分类8
1.2.2嵌入式处理器内核架构10
1.3ARM系列处理器11
1.3.1ARM处理器系列特点与优势11
1.3.2ARM Cortex-M3处理器结构13
1.3.3ARM Cortex-M3指令系统14
1.3.4基于ARM Cortex-M3内核的STM32微控制器14
1.3.5STM32微控制器程序运行机制17
1.4习题18
第2章STM32微控制器硬件基础20
2.1STM32微控制器20
2.1.1STM32微控制器特点与优势20
2.1.2STM32微控制器命名规则22
2.1.3STM32微控制器的应用23
2.2STM32微控制器存储结构23
2.2.1系统结构23
2.2.2存储结构24
2.2.3启动模式25
2.3STM32微控制器外设资源概述26
2.3.1电源管理与低功耗模式26
2.3.2RCC时钟主频系统27
2.3.3RTC实时时钟资源29
2.3.4GPIO工作模式30
2.3.5外部中断资源35
2.3.6ADC资源38
2.3.7看门狗资源41
2.3.8通用定时器资源44
2.3.9高级定时器资源48
2.4嵌入式系统I/O50
2.4.1通用输入/输出接口50
2.4.2模数/数模转换接口51
2.5定时器和计数器52
2.5.1硬件定时器52
2.5.2软件定时器52
2.5.3可编程间隔定时器53
2.6有线通信接口54
2.6.1本地通信接口54
2.6.2网络通信接口78
2.6.3现场总线通信接口86
2.7习题93
第3章基本I/O口控制95
3.1STM32 GPIO简介95
3.1.1I/O基本情况96
3.1.2GPIO配置寄存器描述96
3.1.3端口输出数据寄存器98
3.2寄存器操作98
3.3时钟配置99
3.3.1时钟树100
3.3.2时钟源101
3.3.3APB2外设时钟使能寄存器(RCC_APB2ENR)102
3.4库函数操作103
3.4.1GPIO_Init函数103
3.4.2RCC_APB2PeriphClockCmd106
3.4.3控制I/O输出电平106
3.5实例:GPIO按键点灯实验107
3.5.1使用STM32CubeMX配置基础参数107
3.5.2使用Keil MDK补充程序代码109
3.5.3烧录代码110
3.6习题110
第4章数据的转换与读/写访问113
4.1ADC的编程应用113
4.1.1ADC的原理、参数及类型113
4.1.2ADC的主要操作与特征117
4.1.3ADC相关库函数概述124
4.2DAC的编程应用132
4.2.1DAC的原理、参数及类型133
4.2.2DAC的主要操作与特征134
4.2.3常用的DAC库函数139
4.3DMA数据访问与传输144
4.3.1DMA控制器概述144
4.3.2DMA结构与数据配置144
4.3.3DMA控制器相关库函数148
4.4实例1:ADC单通道数模转换器实验152
4.4.1使用STM32CubeMX配置基础参数152
4.4.2使用Keil MDK补充代码153
4.4.3烧录与测试154
4.5实例2:ADC+DMA多通道输出实验154
4.5.1DMA介绍154
4.5.2使用STM32CubeMX配置基础参数155
4.5.3使用Keil MDK补充代码156
4.5.4烧录代码与测试158
4.6习题158
第5章STM32定时器/计数器160
5.1STM32定时器/计数器概述160
5.1.1TIMx定时器的区别与联系160
5.1.2通用定时器162
5.1.3基本定时器167
5.1.4高级控制定时器168
5.1.5RTC定时器的功能与操作170
5.1.6SysTick时钟功能介绍174
5.1.7看门狗定时器基本操作175
5.2定时器库函数及其应用180
5.2.1TIMx定时器相关函数180
5.2.2RTC与BKP相关函数191
5.2.3SysTick定时器相关函数196
5.2.4看门狗定时器相关函数197
5.3实例:LED跑马灯实验200
5.3.1使用STM32CubeMX配置基础参数200
5.3.2使用Keil MDK补充程序代码202
5.3.3烧录代码202
5.4习题202
第6章中断204
6.1STM32中断和异常204
6.1.1中断简介204
6.1.2中断和异常205
6.2STM32中断相关的基本概念208
6.2.1中断优先级208
6.2.2中断控制器NVIC208
6.2.3NVIC的中断向量优先级组210
6.3外部中断212
6.3.1外部中断基本情况212
6.3.2使用外部中断的基本步骤212
6.4PWM控制技术214
6.4.1PWM面积等效原理214
6.4.2PWM波简介215
6.4.3通过定时器模拟实现PWM波的原理216
6.5实例1:1s输出实验217
6.5.1基础概念217
6.5.2STM32CubeMX配置217
6.5.3Keil MDK补充代码217
6.6实例2:引脚输入捕获实验219
6.6.1基础概念219
6.6.2STM32CubeMX配置219
6.6.3Keil MDK补充代码219
6.7实例3:PWM输出点灯实验221
6.7.1基础概念221
6.7.2STM32CubeMX配置222
6.7.3Keil MDK补充代码222
6.8习题223
第7章USART串口通信技术224
7.1通信的基本概念详解224
7.1.1通信的分类与概念224
7.1.2串口通信协议解析227
7.2USART串口通信概述229
7.2.1USART 的主要功能、主要特性与硬件结构229
7.2.2USART寄存器及其使用235
7.2.3USART 相关库函数简介241
7.3实例:USART串口输出实验249
7.4习题249
第8章嵌入式系统项目的开发与调试251
8.1嵌入式系统的接口与设计251
8.1.1嵌入式接口251
8.1.2常见传感器252
8.1.3嵌入式系统设计实例254
8.2嵌入式项目开发前期准备257
8.2.1嵌入式项目开发模式与流程257
8.2.2嵌入式项目需求量化分析259
8.2.3嵌入式芯片选型分析261
8.2.4芯片外设资源分配264
8.3嵌入式项目实验开发系统265
8.3.1嵌入式开发板功能介绍265
8.3.2嵌入式开发板最小系统265
8.3.3嵌入式开发系统软件运行环境266
8.3.4嵌入式开发板调试269
8.4电路板的设计270
8.4.1嵌入式开发板系统简化270
8.4.2绘制电路图与Altium Designer软件基础操作271
8.4.3电路板设计与制作流程272
8.5程序烧录与调试273
8.5.1嵌入式系统软件硬件结合方式273
8.5.2程序烧录模式275
8.5.3芯片BOOT启动模式277
8.5.4程序串口烧录方式278
8.5.5使用SWD方式烧录程序282
8.6习题286
第9章基于STM32的物联网远程监控系统287
9.1电机状态远程监控系统需求分析与架构设计287
9.1.1电机状态远程监控系统需求287
9.1.2电机远程监控系统架构与数据传输路径分析287
9.1.3需求分析与芯片选型289
9.2基于各种外设的信息采集程序实例290
9.2.1电压电流值采样实例290
9.2.2多路开关量采样实例291
9.2.3温度采样实例293
9.3网络通信实例296
9.3.14G网络通信实例296
9.3.2心跳包功能的实现302
9.3.3云服务器基础操作305
参考文献314