图书简介:
目 录
第1章 嵌入式系统设计基础 1
1.1 嵌入式系统概述 1
1.1.1 什么是嵌入式系统 1
1.1.2 嵌入式系统的技术特点 2
1.1.3 嵌入式系统的组成 2
1.2 嵌入式系统的开发 4
1.2.1 嵌入式系统的开发模式 4
1.2.2 嵌入式系统开发需要的软件、硬件 5
1.2.3 软件开发流程 6
习题1 7
第2章 ARM Cortex-M3处理器 9
2.1 ARM处理器 9
2.2 Cortex-M3处理器结构 10
2.3 寄存器 13
2.4 存储器组织 15
习题2 19
第3章 Thumb指令系统 20
3.1 ARM指令集和Thumb指令集 20
3.2 统一汇编语言(UAL) 21
3.2.1 汇编语言的语句格式 21
3.2.2 汇编语言的程序结构 22
3.2.3 存储器空间分配指示符 24
3.2.4 常量表达 24
3.3 数据寻址 25
3.3.1 寄存器寻址 26
3.3.2 存储器寻址 27
3.4 常用指令 28
3.4.1 处理器指令格式 28
3.4.2 数据传送指令 30
3.4.3 数据处理指令 31
3.4.4 分支跳转指令 32
3.5 STM32启动代码 33
3.6 开发工具MDK 37
3.6.1 MDK安装 38
3.6.2 MDK目录结构 39
3.6.3 创建应用程序 40
3.6.4 汇编语言程序的开发 43
习题3 45
第4章 STM32微控制器 47
4.1 STM32微控制器结构 47
4.1.1 STM32系列微控制器 47
4.1.2 STM32系统结构 49
4.1.3 STM32存储结构 51
4.2 STM32微控制器开发 52
4.2.1 Cortex微控制器软件接口标准CMSIS 53
4.2.2 STM32驱动程序库 54
4.2.3 C语言应用 56
4.3 复位与时钟控制(RCC) 59
习题4 64
第5章 STM32的通用I/O端口 66
5.1 GPIO的结构与功能 66
5.2 GPIO寄存器 67
5.2.1 GPIO寄存器的功能 68
5.2.2 GPIO寄存器的应用 69
5.3 GPIO输出应用示例:LED灯的亮灭控制 71
5.3.1 项目创建和选项配置 71
5.3.2 应用程序分析 74
5.3.3 应用程序编写 77
5.3.4 程序模拟运行 80
5.3.5 程序硬件仿真 83
5.4 GPIO输入应用示例:查询按键状态 85
5.4.1 程序分析和编写 86
5.4.2 程序调试和运行 88
5.5 STM32库编程总结 90
5.5.1 基于STM32库的开发过程 90
5.5.2 使用STM32库的一般规则 91
5.5.3 对比直接对寄存器编程 93
习题5 96
第6章 CM3异常和STM32中断 98
6.1 Cortex-M3的异常 98
6.2 STM32的中断应用 101
6.2.1 NVIC初始化配置 102
6.2.2 外部中断EXTI 103
6.2.3 GPIO引脚的中断配置 106
6.2.4 芯片外设的中断配置 107
6.3 EXTI应用示例:按键中断 107
6.3.1 主程序流程 107
6.3.2 中断初始化配置 109
6.3.3 中断应用程序编写 111
习题6 113
第7章 STM32的串行通信接口 115
7.1 串行异步通信 115
7.1.1 串行异步通信字符格式 115
7.1.2 串行异步通信接口 116
7.2 通用同步/异步接收/发送器(USART) 118
7.2.1 STM32的USART功能 118
7.2.2 STM32的USART应用 120
7.3 USART应用示例:实现C语言标准输入/输出函数 121
7.3.1 USART初始化配置 121
7.3.2 输入/输出函数的重定向 123
7.3.3 信息交互应用程序 126
7.3.4 USART接口的中断应用 128
习题7 133
第8章 STM32的DMA接口 135
8.1 DMA控制器 135
8.1.1 DMA传输过程 135
8.1.2 STM32的DMA功能 136
8.1.3 STM32的DMA应用 138
8.2 DMA应用示例:USART接口的DMA传输 140
8.2.1 DMA初始化配置 140
8.2.2 DMA传输应用程序编写 142
8.3 DMA、USART和GPIO的综合应用 145
8.3.1 综合应用的项目分析 145
8.3.2 综合应用的编程 146
习题8 149
第9章 STM32的定时器接口 151
9.1 系统时钟(SysTick) 151
9.1.1 系统嘀嗒定时器 151
9.1.2 SysTick应用示例:精确定时 154
9.2 STM32看门狗 156
9.2.1 独立看门狗(IWDG) 156
9.2.2 IWDG应用示例:IWDG复位 159
9.2.3 窗口看门狗(WWDG) 161
9.2.4 WWDG应用示例:适时“喂狗” 164
9.3 STM32定时器(TIMx) 166
9.3.1 基本定时器(TIM6和TIM7) 166
9.3.2 基本定时器应用示例:周期性定时中断 170
9.4 STM32实时时钟(RTC) 173
9.4.1 RTC结构及特性 173
9.4.2 RTC应用示例:闹钟 176
习题9 179
第10章 STM32的模拟接口 181
10.1 STM32的ADC接口 181
10.1.1 ADC结构及特性 181
10.1.2 ADC的转换模式 186
10.1.3 STM32的ADC函数 187
10.1.4 ADC应用示例:数据采集 189
10.2 STM32的DAC接口 194
10.2.1 DAC结构及特性 194
10.2.2 STM32的DAC函数 197
10.2.3 DAC应用示例:输出模拟电压 199
习题10 202
参考文献 203
展开
前 言
嵌入式系统是一个快速发展的领域,又是一个知识覆盖面广、技术范围宽的交叉学科。本书面向底层开发的初学者,侧重软件编程,是一本相对初级的“入门”教材。本书是在作者多年教学基础上整理、总结而成的,教材内容结合教学体会,既适合教师进行教学,又利于学生自主学习,具有一定特色。
在内容上,本书基于ARM公司Cortex-M3处理器的STM32微控制器,使用主流的MDK-ARM开发软件和高级语言(C语言),结合STM32驱动程序库和STM32开发板,介绍嵌入式系统的工作原理和应用技术。在结构上,本书不是照搬产品参考手册,也有别于数据手册的面面俱到,而是从学习者角度重新编排,做到有详有略,既有对技术、原理的补充说明,又有对程序代码的分析和解释。相较于大量的中英文资料,尤其是参考手册、用户指南之类的官方文档,本书没有烦琐的寄存器细节和堆砌的固件库函数列表,而是进行知识重组、内容提炼,并尝试在正文中提供一些阅读帮助,还通过大量习题让读者巩固所学;另外,设计开放性题目,引导读者阅读相关文档、深入学习。
全书在前2章提供必要的基础知识,后续章节以完成示例项目为目标(案例导向),介绍相关技术,分析程序流程,详解核心代码,突出实践和提供指导。希望读者完成每个项目,“学中做、做中学”,即所谓“DIY(Do It Yourself)”和“LBD(Learning By Doing)”。
本书面向信息技术类专业的普通本科(专科)学生或自学者,考虑初学者的实际知识水平,努力以清晰的结构,浅显的语言,循序渐进、由浅入深,结合示例项目,展开STM32微控制器及其基本外设接口的编程应用。读者应熟悉C语言编程,最好具有计算机组成原理或者微机原理的先修知识。另外,课程虽然涉及硬件接口,但本书重点讲述软件编程,配合开发环境的软件模拟,可以不需购买开发板,也可以购买价格低廉的STM32开发板。
本书由郑州大学钱晓捷组织,钱晓捷和程楠共同编写。钱晓捷老师编写了前7章以及第8章和第9章前2节的初稿;程楠老师编写剩余章节的初稿,并验证了所有示例项目。全书由钱晓捷老师统稿。本书编写和试用过程中,得到张青、姚俊婷等老师的帮助,在此表示感谢。
由于编者水平有限,本书难免会有疏漏和不当之处,欢迎广大师生和读者指正(iexjqian@zzu.edu.cn,iencheng@zzu.edu.cn)。
本书为读者提供相关教学资源(含电子课件),有需要者,请登录http://www.hxedu.com.cn,注册之后进行下载。
展开