嵌入式系统基础与实践——基于ARM Cortex-M3内核的STM32微控制器(第2版)
定价:¥69.80
作者: 刘黎明
出版时间:2025-05
出版社:电子工业出版社
- 电子工业出版社
- 9787121404702
- 2版
- 568610
- 平塑
- 16开
- 2025-05
- 701
- 428
- 工学
- 自动化类
- 电气自动化技术
- 本科 高职 研究生及以上
内容简介
本书以嵌入式系统的基本概念和原理为主线,基于ARM Cortex-M3内核的STM32微控制器,遵循系统化、模块化设计思想,针对STM32的五大外设模块(GPIO、EXTI、USART、DMA和ADC),分别采用基于标准外设库和基于HAL库的设计方法进行详细阐述,并从初学者的角度出发,详细讲解从模块到项目的开发过程,并基于μC/OS-Ⅲ嵌入式操作系统讲述了嵌入式操作系统的基本原理及开发思路。本书内容全面,由浅入深,配套资源丰富。 本书可以作为高等院校本科生教材。
目录
目录
第1章 嵌入式系统概述 1
1.1 信息技术的发展 1
1.1.1 计算机的诞生 1
1.1.2 通用信息处理 2
1.1.3 人工智能 4
1.2 嵌入式系统 5
1.2.1 嵌入式系统案例分析 5
1.2.2 嵌入式系统概念 9
1.2.3 嵌入式系统与物联网 10
1.3 嵌入式初学者杂谈 10
1.3.1 MCU、MPU、ARM、FPGA、DSP概念 11
1.3.2 MCU开发与ARM-Linux开发的区别 14
1.3.3 开源硬件Arduino和树莓派 15
1.4 嵌入式系统开发流程 16
1.4.1 系统需求分析 17
1.4.2 系统总体设计 18
1.4.3 系统软硬件设计 19
1.4.4 系统软硬件测试 20
本章小结 20
习题与思考 21
第2章 ARM Cortex-M3内核与STM32微控制器 23
2.1 嵌入式系统基础知识 23
2.1.1 冯·诺依曼结构与哈佛结构 23
2.1.2 ARM存储模式 25
2.1.3 CISC和RISC 26
2.1.4 流水线技术 28
2.2 ARM 29
2.2.1 ARM介绍 29
2.2.2 ARM体系结构 30
2.3 ARM Cortex-M3 33
2.3.1 内核架构 34
2.3.2 寄存器 37
2.3.3 存储结构 38
2.3.4 中断与异常(NVIC) 40
2.4 STM32微控制器结构 42
2.4.1 STM32系统结构 42
2.4.2 STM32总线结构 42
2.4.3 STM32存储结构 43
2.4.4 STM32中断系统 45
2.4.5 STM32时钟系统 47
本章小结 48
习题与思考 48
第3章 STM32开发环境搭建 51
3.1 STM32介绍 51
3.2 STM32开发模式 56
3.2.1 寄存器开发模式 57
3.2.2 标准外设库开发模式 58
3.2.3 HAL库开发模式 59
3.3 开发平台的搭建 60
3.3.1 嵌入式开发环境 60
3.3.2 集成开发环境Keil 62
3.3.3 下载和安装Packs包 63
3.4 基于标准外设库开发平台的搭建 66
3.4.1 STM32标准外设库文件结构 66
3.4.2 基于标准外设库新建工程模板 73
3.5 基于HAL库开发平台的搭建 85
3.5.1 Java运行环境的安装 85
3.5.2 安装STM32CubeMX软件 85
3.5.3 STM32CubeF1库文件结构 87
3.5.4 STM32CubeMX生成的工程架构解析 88
本章小结 95
习题与思考 95
第4章 STM32最小系统与嵌入式C语言 98
4.1 STM32最小系统 98
4.1.1 电源电路 99
4.1.2 晶振电路 100
4.1.3 复位电路 101
4.1.4 调试和下载电路 102
4.2 嵌入式C语言 104
4.2.1 STM32的数据类型 105
4.2.2 const关键字 107
4.2.3 static关键字 108
4.2.4 volatile关键字 109
4.2.5 extern关键字 110
4.2.6 struct结构体 111
4.2.7 enum 112
4.2.8 typedef 113
4.2.9 #define 115
4.2.10 #ifdef、#ifndef、#else、#if条件编译 116
4.2.11 指针 119
4.2.12 回调函数 124
4.3 HAL库文件源代码分析 125
4.3.1 stm32f1xx.h 125
4.3.2 stm32f103xe.h 129
4.3.3 stm32f1xx_hal.c和stm32f1xx_hal.h 134
4.3.4 stm32f1xx_hal_gpio.c和stm32f1xx_hal_gpio.h 137
本章小结 139
习题与思考 140
第5章 通用输入/输出 142
5.1 GPIO概述 142
5.2 STM32的GPIO 143
5.2.1 GPIO引脚 144
5.2.2 GPIO内部结构 145
5.2.3 GPIO工作模式 146
5.2.4 GPIO输出速度 148
5.3 GPIO标准外设库接口函数及应用 149
5.3.1 GPIO标准外设库接口函数 149
5.3.2 GPIO标准外设库应用实例 152
5.3.3 基于标准外设库开发的一般流程 154
5.4 GPIO的HAL库接口函数及应用 156
5.4.1 GPIO的HAL库接口函数 156
5.4.2 GPIO的HAL库应用实例 161
5.4.3 基于HAL库开发的一般流程 174
5.5 编程思想之模块化编程 175
本章小结 178
习题与思考 179
第6章 中断 182
6.1 中断的相关概念 182
6.1.1 什么是中断 182
6.1.2 为什么使用中断 183
6.1.3 中断处理流程 183
6.2 STM32中断和异常 185
6.2.1 STM32中断和异常向量表 185
6.2.2 STM32中断优先级 190
6.2.3 STM32中断服务程序 192
6.3 STM32外部中断EXTI 192
6.4 EXTI标准外设库接口函数及应用 195
6.4.1 EXTI标准外设库接口函数 195
6.4.2 EXTI标准外设库中断应用编程步骤 197
6.4.3 EXTI标准外设库应用实例 198
6.5 EXTI的HAL库接口函数及应用 201
6.5.1 EXTI的HAL库接口函数 201
6.5.2 EXTI的HAL库应用实例 202
本章小结 208
习题与思考 209
第7章 串口通信 212
7.1 通信概述 212
7.2 异步串行通信 215
7.2.1 异步串行通信协议 215
7.2.2 异步串行通信接口 216
7.3 STM32的USART模块 217
7.3.1 USART的内部结构 218
7.3.2 USART接口 220
7.3.3 USART的编程方式 221
7.4 USART标准外设库接口函数及应用 223
7.4.1 USART标准外设库接口函数 223
7.4.2 USART串口应用编程步骤 227
7.4.3 USART标准外设库应用实例 228
7.5 USART的HAL库接口函数及应用 233
7.5.1 USART的HAL库接口函数 233
7.5.2 USART的HAL库应用实例 237
7.5.3 USART应用实例拓展 243
7.6 编程思想之自定义串口通信协议 245
本章小结 247
习题与思考 249
第8章 DMA 251
8.1 DMA基础理论知识 251
8.2 STM32的DMA模块 252
8.2.1 DMA内部结构 252
8.2.2 DMA优先权 254
8.2.3 DMA中断请求 256
8.3 DMA标准外设库接口函数及应用 256
8.3.1 DMA标准外设库接
第1章 嵌入式系统概述 1
1.1 信息技术的发展 1
1.1.1 计算机的诞生 1
1.1.2 通用信息处理 2
1.1.3 人工智能 4
1.2 嵌入式系统 5
1.2.1 嵌入式系统案例分析 5
1.2.2 嵌入式系统概念 9
1.2.3 嵌入式系统与物联网 10
1.3 嵌入式初学者杂谈 10
1.3.1 MCU、MPU、ARM、FPGA、DSP概念 11
1.3.2 MCU开发与ARM-Linux开发的区别 14
1.3.3 开源硬件Arduino和树莓派 15
1.4 嵌入式系统开发流程 16
1.4.1 系统需求分析 17
1.4.2 系统总体设计 18
1.4.3 系统软硬件设计 19
1.4.4 系统软硬件测试 20
本章小结 20
习题与思考 21
第2章 ARM Cortex-M3内核与STM32微控制器 23
2.1 嵌入式系统基础知识 23
2.1.1 冯·诺依曼结构与哈佛结构 23
2.1.2 ARM存储模式 25
2.1.3 CISC和RISC 26
2.1.4 流水线技术 28
2.2 ARM 29
2.2.1 ARM介绍 29
2.2.2 ARM体系结构 30
2.3 ARM Cortex-M3 33
2.3.1 内核架构 34
2.3.2 寄存器 37
2.3.3 存储结构 38
2.3.4 中断与异常(NVIC) 40
2.4 STM32微控制器结构 42
2.4.1 STM32系统结构 42
2.4.2 STM32总线结构 42
2.4.3 STM32存储结构 43
2.4.4 STM32中断系统 45
2.4.5 STM32时钟系统 47
本章小结 48
习题与思考 48
第3章 STM32开发环境搭建 51
3.1 STM32介绍 51
3.2 STM32开发模式 56
3.2.1 寄存器开发模式 57
3.2.2 标准外设库开发模式 58
3.2.3 HAL库开发模式 59
3.3 开发平台的搭建 60
3.3.1 嵌入式开发环境 60
3.3.2 集成开发环境Keil 62
3.3.3 下载和安装Packs包 63
3.4 基于标准外设库开发平台的搭建 66
3.4.1 STM32标准外设库文件结构 66
3.4.2 基于标准外设库新建工程模板 73
3.5 基于HAL库开发平台的搭建 85
3.5.1 Java运行环境的安装 85
3.5.2 安装STM32CubeMX软件 85
3.5.3 STM32CubeF1库文件结构 87
3.5.4 STM32CubeMX生成的工程架构解析 88
本章小结 95
习题与思考 95
第4章 STM32最小系统与嵌入式C语言 98
4.1 STM32最小系统 98
4.1.1 电源电路 99
4.1.2 晶振电路 100
4.1.3 复位电路 101
4.1.4 调试和下载电路 102
4.2 嵌入式C语言 104
4.2.1 STM32的数据类型 105
4.2.2 const关键字 107
4.2.3 static关键字 108
4.2.4 volatile关键字 109
4.2.5 extern关键字 110
4.2.6 struct结构体 111
4.2.7 enum 112
4.2.8 typedef 113
4.2.9 #define 115
4.2.10 #ifdef、#ifndef、#else、#if条件编译 116
4.2.11 指针 119
4.2.12 回调函数 124
4.3 HAL库文件源代码分析 125
4.3.1 stm32f1xx.h 125
4.3.2 stm32f103xe.h 129
4.3.3 stm32f1xx_hal.c和stm32f1xx_hal.h 134
4.3.4 stm32f1xx_hal_gpio.c和stm32f1xx_hal_gpio.h 137
本章小结 139
习题与思考 140
第5章 通用输入/输出 142
5.1 GPIO概述 142
5.2 STM32的GPIO 143
5.2.1 GPIO引脚 144
5.2.2 GPIO内部结构 145
5.2.3 GPIO工作模式 146
5.2.4 GPIO输出速度 148
5.3 GPIO标准外设库接口函数及应用 149
5.3.1 GPIO标准外设库接口函数 149
5.3.2 GPIO标准外设库应用实例 152
5.3.3 基于标准外设库开发的一般流程 154
5.4 GPIO的HAL库接口函数及应用 156
5.4.1 GPIO的HAL库接口函数 156
5.4.2 GPIO的HAL库应用实例 161
5.4.3 基于HAL库开发的一般流程 174
5.5 编程思想之模块化编程 175
本章小结 178
习题与思考 179
第6章 中断 182
6.1 中断的相关概念 182
6.1.1 什么是中断 182
6.1.2 为什么使用中断 183
6.1.3 中断处理流程 183
6.2 STM32中断和异常 185
6.2.1 STM32中断和异常向量表 185
6.2.2 STM32中断优先级 190
6.2.3 STM32中断服务程序 192
6.3 STM32外部中断EXTI 192
6.4 EXTI标准外设库接口函数及应用 195
6.4.1 EXTI标准外设库接口函数 195
6.4.2 EXTI标准外设库中断应用编程步骤 197
6.4.3 EXTI标准外设库应用实例 198
6.5 EXTI的HAL库接口函数及应用 201
6.5.1 EXTI的HAL库接口函数 201
6.5.2 EXTI的HAL库应用实例 202
本章小结 208
习题与思考 209
第7章 串口通信 212
7.1 通信概述 212
7.2 异步串行通信 215
7.2.1 异步串行通信协议 215
7.2.2 异步串行通信接口 216
7.3 STM32的USART模块 217
7.3.1 USART的内部结构 218
7.3.2 USART接口 220
7.3.3 USART的编程方式 221
7.4 USART标准外设库接口函数及应用 223
7.4.1 USART标准外设库接口函数 223
7.4.2 USART串口应用编程步骤 227
7.4.3 USART标准外设库应用实例 228
7.5 USART的HAL库接口函数及应用 233
7.5.1 USART的HAL库接口函数 233
7.5.2 USART的HAL库应用实例 237
7.5.3 USART应用实例拓展 243
7.6 编程思想之自定义串口通信协议 245
本章小结 247
习题与思考 249
第8章 DMA 251
8.1 DMA基础理论知识 251
8.2 STM32的DMA模块 252
8.2.1 DMA内部结构 252
8.2.2 DMA优先权 254
8.2.3 DMA中断请求 256
8.3 DMA标准外设库接口函数及应用 256
8.3.1 DMA标准外设库接













