嵌入式系统导论 本书特色
本书基于ARM Cortex-M3处理器的STM32微控制器,使用MDK-ARM开发软件和C语言,结合STM32驱动程序库和STM32开发板,面向底层应用编程,介绍嵌入式计算机系统的工作原理和应用技术,包括嵌入式系统组成、Cortex-M3处理器编程结构、常用指令、STM32微控制器通用输入/输出端口(GPIO)、外部中断接口(EXTI)、串行接口(USART)、直接存储器传输接口(DMA)、定时器接口(SysTick、IWDG、WWDG、TIMx、RTC)和模拟接口(ADC、DAC)等。本书可以作为高等院校计算机、电子、通信及自动控制等专业“嵌入式系统导论”或“嵌入式系统基础”的教材或参考书,也适合嵌入式系统应用开发人员和希望学习嵌入式系统的普通读者和技术人员参考。
嵌入式系统导论 内容简介
本书基于ARM Cortex-M3处理器的STM32微控制器, 使用MDK-ARM开发软件和C语言, 结合STM32驱动程序库和STM32开发板, 介绍嵌入式计算机系统的工作原理和应用技术, 包括嵌入式系统组成、Cortex-M3处理器编程结构、常用指令、STM32微控制器通用输入输出接口、外部中断接口、串行接口等内容。
嵌入式系统导论 目录
目 录
第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
嵌入式系统导论 作者简介
钱晓捷,男,副教授,郑州大学信息学院。中国计算机学会会员,现任河南省计算机学会教育专委副主任,主要从事计算机系统结构、嵌入式系统、计算机辅助教学等方面的研究。主持教育部-微软、河南省精品课程“汇编语言程序设计”、校级远程教育精品课程“微机原理及接口技术”建设。主持完成“网络CAI课件研究与开发”、“河南省新世纪网络课程建设工程项目”等科研项目。主编10余部高校教材,其中2部属于普通高等教育“十一五”国家级规划教材。具有丰富的教学经历和教研体会,主讲计算机硬件系列课程20余年,主要包括“微机原理及接口技术”、“汇编语言程序设计”、“计算机组织与结构”、“高级计算机系统结构”等。