教育>本科研究生>电子信息类
嵌入式微控制器原理及设计——基于STM32及Proteus仿真开发

嵌入式微控制器原理及设计——基于STM32及Proteus仿真开发"

作者:毕盛,赖晓铮,汪秀敏等
ISBN:9787121425035
定价:¥49.0
字数:385千字
页数:228
出版时间:2021-12
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书基于STM32芯片及Proteus仿真开发来讲述嵌入式微控制器原理与设计,主要内容包括:嵌入式系统开发的相关背景;嵌入式ARM芯片体系结构及汇编语言;嵌入式系统开发环境、工具、编程语言及库函数;嵌入式芯片基本组成、最小系统、下载方式和低功耗模式;嵌入式芯片接口和嵌入式操作系统。本书分别对微控制器常见的GPIO、中断、异步串行通信、同步串行通信、高级定时器、通用定时器、滴答时钟、ADC、DMA、总线及USB接口进行了讲解;同时对嵌入式物联网操作系统进行了介绍,基于?C/OS-II展开并说明嵌入式操作系统的核心内容和功能;最后通过一个小车的实例说明嵌入式系统综合实例的实现过程。本书在讲解各个知识点的同时设计了Proteus仿真开发实例,从而有助于读者对各个知识点的理解。本书可作为高等院校电子工程、自动化、计算机科学及技术和电气工程等专业教材和参考书,也可供相关工程技术人员参考。

前言

近年来随着ARM芯片在微控制器领域的应用,越来越多的嵌入式开发是基于ARM Cortex-M3内核的STM32系列微控制器开展的,因此越来越多的开发爱好者开始对此芯片进行学习,同时最近新版的Proteus仿真软件开始支持STM32F103R6芯片等。因此本书以STM32F103R6芯片为主并配合Proteus仿真软件对嵌入式各种接口以及嵌入式操作系统进行了讲解。 本书主要从三个层面说明嵌入式微控制器系统,具体如下: (1)在嵌入式体系结构层面,对基于ARM的嵌入式体系结构和汇编进行了讲解。 (2)在嵌入式接口层面,对微控制器常见的GPIO(通用输入/输出口)、中断、异步串行通信、同步串行通信、高级定时器、通用定时器、滴答时钟、ADC(模数转换)、DMA(直接内存存取)、总线及USB接口进行了讲解。 (3)在嵌入式操作系统层面,对嵌入式物联网操作系统进行了介绍并基于μC/OS-II展开说明。 最后,以一个小车为综合实例,详细讲解了一个完整的嵌入式系统开发流程。 为便于读者更好地理解理论知识,本书在介绍嵌入式系统知识点的同时,提供了一系列基于Proteus的仿真实例,如下表所示。 章节 实例名称 第5章 例5.1 GPIO寄存器实例 例5.2 GPIO标准库实例 例5.3 GPIO HAL库实例 例5.4 GPIO LL库实例 例5.5 LED数码管显示实例 例5.6 行列式键盘实例 第6章 例6.1 外部中断实例 第7章 例7.1 串口查询实例 例7.2 串口中断实例 例7.3 与PC串口通信实例 例7.4 printf串口中断实例 例7.5 RS-485通信实例 例7.6 SPI接口实例 第8章 例8.1 定时器实例 例8.2 计数器实例 例8.3 捕获实例 例8.4 PWM输出实例 第9章 例9.1 ADC查询方式实例 例9.2 ADC中断方式实例 第10章 例10.1 DMA ADC采集实例 例10.2 DMA串口发送实例 第11章 例11.1 I2C实例 第12章 例12.1 互斥信号量实例 例12.2 信号量同步实例 例12.3 信号量共享资源互斥实例 例12.4 信号量外部中断实例 例12.5 邮箱通信实例 例12.6 队列通信实例 例12.7 动态内存实例 第13章 小车系统综合实例 本书主要内容由毕盛负责撰写,赖晓铮、汪秀敏和冼进参与了部分内容的撰写、编排和校订以及和Proteus中国代理商风标公司的沟通工作。在此过程中,感谢风标公司匡载华、王荣华和梁树先经理对本书编写的支持以及彭东明工程师对Proteus仿真实验的技术支持,同时感谢研究生郭传鈜、陈章韶、曹瑞东、江煊璐、方政霖、钟浩钊、罗超和林华伟同学在编写此书过程中给予的帮助。 本书提供电子课件和所有实例源代码,读者可在www.hxedu.com.cn免费下载。 由于编者学术水平有限,书中难免存在表达欠妥之处,希望广大读者和专家学者能够拨冗提出宝贵的修改建议。修改建议可直接反馈至编者的电子邮箱:picy@scut.edu.cn。

目录

第1章 嵌入式系统与微控制器 1 1.1 嵌入式系统相关概念 1 1.1.1 什么是嵌入式系统 1 1.1.2 嵌入式系统的特点 1 1.1.3 嵌入式系统主要组成 1 1.1.4 嵌入式芯片类型 3 1.2 微控制器 4 1.2.1 微控制器特点 4 1.2.2 微控制器芯片型号及发展历史 4 1.2.3 ARM微控制器介绍 6 1.2.4 STM32 ARM Cortex-M微控制器 7 1.3 嵌入式系统开发 8 1.3.1 方案设计及芯片选型 8 1.3.2 嵌入式系统硬件开发 8 1.3.3 嵌入式系统软件开发 9 1.3.4 嵌入式代码编译 11 1.3.5 嵌入式代码下载及调试 11 1.4 微控制器芯片的发展趋势 12 习题1 13 第2章 微控制器体系结构及汇编语言 14 2.1 Cortex-M3内核体系架构 15 2.1.1 Cortex-M3总体架构 15 2.1.2 Cortex-M3总线接口 16 2.1.3 Cortex-M3寄存器 16 2.1.4 Cortex-M3操作模式 18 2.1.5 Cortex-M3存储器映射 19 2.1.6 流水线 19 2.1.7 异常和中断 20 2.1.8 存储器保护单元(MPU) 20 2.2 汇编指令寻址方式 20 2.3 ARM指令集 22 2.3.1 指令基本形式 22 2.3.2 ARM指令集条件码 23 2.3.3 ARM指令种类 23 2.4 Thumb指令集 28 习题2 29 第3章 微控制器硬件系统 31 3.1 微控制器概述 31 3.1.1 STM32F103内部结构 31 3.1.2 STM32F103常用接口 33 3.1.3 STM32F103系列微控制器简介 35 3.2 微控制器基本电路 36 3.2.1 电源电路 36 3.2.2 复位电路 37 3.2.3 时钟源 38 3.2.4 时钟管理单元 39 3.2.5 下载电路 41 3.2.6 启动配置电路 42 3.3 微控制器低功耗模式 43 习题3 44 第4章 微控制器软件开发 45 4.1 微控制器开发语言 45 4.1.1 开发语言介绍 45 4.1.2 嵌入式C语言 46 4.2 微控制器开发库函数 51 4.2.1 STM32开发库函数介绍 51 4.2.2 STM32 STD库 53 4.2.3 STM32 HAL库和LL库 54 4.3 微控制器开发环境 56 4.3.1 MDK开发环境 56 4.3.2 STM32CubeMX软件 57 4.4 微控制器虚拟仿真环境 58 4.5 微控制器程序调试和下载 60 习题4 61 第5章 GPIO 62 5.1 GPIO结构及特点 62 5.1.1 GPIO功能模式 62 5.1.2 GPIO特点及操作 63 5.1.3 GPIO开发实例 64 5.2 GPIO寄存器开发方式 65 5.2.1 GPIO寄存器说明 65 5.2.2 GPIO寄存器实现应用实例 66 5.3 GPIO STD库开发方式 67 5.3.1 GPIO STD库函数说明 67 5.3.2 GPIO STD库应用实例 69 5.4 GPIO HAL库开发方式 71 5.4.1 GPIO HAL库函数说明 71 5.4.2 GPIO HAL库应用实例 73 5.5 GPIO LL库开发方式 76 5.5.1 GPIO LL库函数说明 76 5.5.2 GPIO LL库应用实例 79 5.6 GPIO应用开发实例 80 5.6.1 数码管显示实例 80 5.6.2 行列式键盘扫描实例 83 习题5 86 第6章 中断 87 6.1 STM32中断简介 87 6.2 嵌套向量中断控制器 89 6.2.1 NVIC寄存器 89 6.2.2 系统控制寄存器(SCB) 89 6.2.3 中断和异常处理 90 6.2.4 STM32中断优先级 91 6.3 EXTI外部中断 92 6.3.1 EXTI硬件结构 92 6.3.2 EXTI中断操作 93 6.4 EXTI中断应用实例 94 习题6 95 第7章 串行通信 96 7.1 串行通信简介 96 7.1.1 串行通信基础知识 96 7.1.2 微控制器常见串行通信方式 97 7.2 STM32 USART接口 98 7.2.1 USART硬件引脚 98 7.2.2 USART主要寄存器及中断请求 99 7.2.3 UART异步通信 100 7.2.4 USART其他功能模式 101 7.3 UART异步串行操作 102 7.3.1 串行数据发送和接收 102 7.3.2 UART数据发送和接收应用实例 104 7.3.3 RS-232接口 107 7.3.4 printf串口终端实现 109 7.3.5 RS-485接口 110 7.4 基于串口的无线通信 111 7.4.1 移动通信 112 7.4.2 蓝牙串口 112 7.4.3 串口无线网络(WiFi) 113 7.4.4 ZigBee通信 113 7.5 SPI通信 113 7.5.1 STM32 SPI接口 113 7.5.2 SPI接口应用实例 115 习题7 117 第8章 定时器 118 8.1 定时器概述 118 8.1.1 通用定时器 119 8.1.2 高级定时器 119 8.1.3 高级/通用定时器接口 119 8.1.4 定时器引脚和寄存器 122 8.1.5 定时器时钟源 123 8.1.6 定时器计数模式 123 8.2 定时器操作 124 8.2.1 定时功能及实例 124 8.2.2 计数功能及实例 127 8.2.3 捕获功能及实例 129 8.2.4 输出PWM模式及实例 131 8.2.5 其他功能模式 134 8.3 系统滴答定时器(SysTick) 135 8.3.1 SysTick工作分析及配置 136 8.3.2 SysTick功能实现 136 8.4 看门狗定时器(WDT) 138 8.4.1 独立看门狗 138 8.4.2 窗口看门狗 139 8.4.3 独立看门狗与窗口看门狗的区别 141 8.5 实时时钟(RTC) 141 习题8 145 第9章 ADC 146 9.1 ADC概述 146 9.1.1 STM32的ADC功能 146 9.1.2 STM32的ADC结构 146 9.1.3 STM32芯片的ADC引脚 148 9.1.4 STM32的ADC工作模式 149 9.1.5 STM32的ADC主要寄存器 153 9.2 ADC应用实例 154 9.2.1 实例主要库函数说明 154 9.2.2 ADC查询和中断实例 155 习题9 157 第10章 DMA 158 10.1 DMA概述 158 10.1.1 STM32的DMA特性 158 10.1.2 STM32的DMA主要寄存器 160 10.2 DMA应用实例 160 10.2.1 ADC数据采集DMA方式 160 10.2.2 串口发送DMA方式 161 习题10 163 第11章 其他接口 164 11.1 I2C总线 164 11.1.1 I2C总线介绍 164 11.1.2 STM32的I2C总线 165 11.1.3 I2C总线应用实例 167 11.2 CAN总线 171 11.2.1 CAN总线介绍 171 11.2.2 STM32的CAN总线 173 11.3 USB总线 173 11.3.1 USB简介 173 11.3.2 STM32的USB接口 174 习题11 174 第12章 嵌入式操作系统 175 12.1 嵌入式操作系统概述 175 12.1.1 传统小型嵌入式操作系统 175 12.1.2 嵌入式小型物联网操作系统 176 12.1.3 嵌入式操作系统实时性特点 178 12.2 μC/OS-II嵌入式操作系统 178 12.2.1 μC/OS-II特性 179 12.2.2 μC/OS-II主要代码说明 179 12.2.3 μC/OS-II的启动过程 181 12.3 μC/OS-II操作系统移植 181 12.3.1 移植规划 181 12.3.2 编写OS_CPU.H 182 12.4 μC/OS-II内核结构 184 12.4.1 μC/OS-II的任务状态 184 12.4.2 任务控制块OS_TCB 185 12.4.3 μC/OS-II的任务调度 186 12.4.4 μC/OS-II的任务切换 187 12.4.5 μC/OS-II的中断处理 188 12.5 μC/OS-II任务、时间及事件控制块 188 12.5.1 任务管理 188 12.5.2 时间管理 189 12.5.3 事件控制块 191 12.6 互斥信号量(Mutex) 192 12.6.1 互斥信号量介绍 192 12.6.1 互斥信号量实例 192 12.7 信号量 194 12.7.1 概述 194 12.7.2 信号量任务同步实例 195 12.7.3 信号量资源共享实例 197 12.7.4 中断服务程序与任务同步实例 198 12.8 事件标志组 200 12.8.1 概述 200 12.8.2 事件标志组操作 201 12.9 消息邮箱 202 12.9.1 概述 202 12.9.2 消息邮箱操作 203 12.10 消息队列 205 12.10.1 概述 205 12.10.2 消息队列操作 206 12.11 动态内存管理 207 12.11.1 概述 207 12.11.2 动态内存管理操作实例 207 习题12 208 第13章 综合设计实例 209 13.1 嵌入式系统开发流程 209 13.2 嵌入式系统开发实例 210 13.2.1 小车系统及整体设计 210 13.2.2 硬件设计说明 210 13.2.3 软件设计说明 214 习题13 219 参考文献 220

作者简介

编辑推荐

作者寄语

电子资料

http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0425030

www.luweidong.cn

下一个