嵌入式微控制器原理及设计——基于STM32及Proteus仿真开发
作者: 毕盛
出版社:电子工业出版社 2021-12-01
简介:本书基于STM32芯片及Proteus仿真开发来讲述嵌入式微控制器原理与设计,主要内容包括:嵌入式系统开发的相关背景;嵌入式ARM芯片体系结构及汇编语言;嵌入式系统开发环境、工具、编程语言及库函数;嵌入式芯片基本组成、小系统、下载方式和低功耗模式;嵌入式芯片接口和嵌入式操作系统。本书分别对微控制器常见的GPIO、中断、异步串行通信、同步串行通信、高级定时器、通用定时器、滴答时钟、ADC、DMA、总线及USB接口进行了讲解;同时对嵌入式物联网操作系统进行了介绍,基于?C/OS-II展开并说明嵌入式操作系统的核心内容和功能;后通过一个小车的实例说明嵌入式系统综合实例的实现过程。本书在讲解各个知识点的同时设计了Proteus仿真开发实例,从而有助于读者对各个知识点的理解。本书可作为高等院校电子工程、自动化、计算机科学及技术和电气工程等专业教材和参考书,也可供相关工程技术人员参考。【目录】第1章 嵌入式系统与微控制器 11.1 嵌入式系统相关概念 11.1.1 什么是嵌入式系统 11.1.2 嵌入式系统的特点 11.1.3 嵌入式系统主要组成 11.1.4 嵌入式芯片类型 31.2 微控制器 41.2.1 微控制器特点 41.2.2 微控制器芯片型号及发展历史 41.2.3 ARM微控制器介绍 61.2.4 STM32 ARM Cortex-M微控制器 71.3 嵌入式系统开发 81.3.1 方案设计及芯片选型 81.3.2 嵌入式系统硬件开发 81.3.3 嵌入式系统软件开发 91.3.4 嵌入式代码编译 111.3.5 嵌入式代码下载及调试 111.4 微控制器芯片的发展趋势 12习题1 13第2章 微控制器体系结构及汇编语言 142.1 Cortex-M3内核体系架构 152.1.1 Cortex-M3总体架构 152.1.2 Cortex-M3总线接口 162.1.3 Cortex-M3寄存器 162.1.4 Cortex-M3操作模式 182.1.5 Cortex-M3存储器映射 192.1.6 流水线 192.1.7 异常和中断 202.1.8 存储器保护单元(MPU) 202.2 汇编指令寻址方式 202.3 ARM指令集 222.3.1 指令基本形式 222.3.2 ARM指令集条件码 232.3.3 ARM指令种类 232.4 Thumb指令集 28习题2 29第3章 微控制器硬件系统 313.1 微控制器概述 313.1.1 STM32F103内部结构 313.1.2 STM32F103常用接口 333.1.3 STM32F103系列微控制器简介 353.2 微控制器基本电路 363.2.1 电源电路 363.2.2 复位电路 373.2.3 时钟源 383.2.4 时钟管理单元 393.2.5 下载电路 413.2.6 启动配置电路 423.3 微控制器低功耗模式 43习题3 44第4章 微控制器软件开发 454.1 微控制器开发语言 454.1.1 开发语言介绍 454.1.2 嵌入式C语言 464.2 微控制器开发库函数 514.2.1 STM32开发库函数介绍 514.2.2 STM32 STD库 534.2.3 STM32 HAL库和LL库 544.3 微控制器开发环境 564.3.1 MDK开发环境 564.3.2 STM32CubeMX软件 574.4 微控制器虚拟仿真环境 584.5 微控制器程序调试和下载 60习题4 61第5章 GPIO 625.1 GPIO结构及特点 625.1.1 GPIO功能模式 625.1.2 GPIO特点及操作 635.1.3 GPIO开发实例 645.2 GPIO寄存器开发方式 655.2.1 GPIO寄存器说明 655.2.2 GPIO寄存器实现应用实例 665.3 GPIO STD库开发方式 675.3.1 GPIO STD库函数说明 675.3.2 GPIO STD库应用实例 695.4 GPIO HAL库开发方式 715.4.1 GPIO HAL库函数说明 715.4.2 GPIO HAL库应用实例 735.5 GPIO LL库开发方式 765.5.1 GPIO LL库函数说明 765.5.2 GPIO LL库应用实例 795.6 GPIO应用开发实例 805.6.1 数码管显示实例 805.6.2 行列式键盘扫描实例 83习题5 86第6章 中断 876.1 STM32中断简介 876.2 嵌套向量中断控制器 896.2.1 NVIC寄存器 896.2.2 系统控制寄存器(SCB) 896.2.3 中断和异常处理 906.2.4 STM32中断优先级 916.3 EXTI外部中断 926.3.1 EXTI硬件结构 926.3.2 EXTI中断操作 936.4 EXTI中断应用实例 94习题6 95第7章 串行通信 967.1 串行通信简介 967.1.1 串行通信基础知识 967.1.2 微控制器常见串行通信方式 977.2 STM32 USART接口 987.2.1 USART硬件引脚 987.2.2 USART主要寄存器及中断请求 997.2.3 UART异步通信 1007.2.4 USART其他功能模式 1017.3 UART异步串行操作 1027.3.1 串行数据发送和接收 1027.3.2 UART数据发送和接收应用实例 1047.3.3 RS-232接口 1077.3.4 printf串口终端实现 1097.3.5 RS-485接口 1107.4 基于串口的无线通信 1117.4.1 移动通信 1127.4.2 蓝牙串口 1127.4.3 串口无线网络(WiFi) 1137.4.4 ZigBee通信 1137.5 SPI通信 1137.5.1 STM32 SPI接口 1137.5.2 SPI接口应用实例 115习题7 117第8章 定时器 1188.1 定时器概述 1188.1.1 通用定时器 1198.1.2 高级定时器 1198.1.3 高级/通用定时器接口 1198.1.4 定时器引脚和寄存器 1228.1.5 定时器时钟源 1238.1.6 定时器计数模式 1238.2 定时器操作 1248.2.1 定时功能及实例 1248.2.2 计数功能及实例 1278.2.3 捕获功能及实例 1298.2.4 输出PWM模式及实例 1318.2.5 其他功能模式 1348.3 系统滴答定时器(SysTick) 1358.3.1 SysTick工作分析及配置 1368.3.2 SysTick功能实现 1368.4 看门狗定时器(WDT) 1388.4.1 独立看门狗 1388.4.2 窗口看门狗 1398.4.3 独立看门狗与窗口看门狗的区别 1418.5 实时时钟(RTC) 141习题8 145第9章 ADC 1469.1 ADC概述 1469.1.1 STM32的ADC功能 1469.1.2 STM32的ADC结构 1469.1.3 STM32芯片的ADC引脚 1489.1.4 STM32的ADC工作模式 1499.1.5 STM32的ADC主要寄存器 1539.2 ADC应用实例 1549.2.1 实例主要库函数说明 1549.2.2 ADC查询和中断实例 155习题9 157第10章 DMA 15810.1 DMA概述 15810.1.1 STM32的DMA特性 15810.1.2 STM32的DMA主要寄存器 16010.2 DMA应用实例 16010.2.1 ADC数据采集DMA方式 16010.2.2 串口发送DMA方式 161习题10 163第11章 其他接口 16411.1 I2C总线 16411.1.1 I2C总线介绍 16411.1.2 STM32的I2C总线 16511.1.3 I2C总线应用实例 16711.2 CAN总线 17111.2.1 CAN总线介绍 17111.2.2 STM32的CAN总线 17311.3 USB总线 17311.3.1 USB简介 17311.3.2 STM32的USB接口 174习题11 174第12章 嵌入式操作系统 17512.1 嵌入式操作系统概述 17512.1.1 传统小型嵌入式操作系统 17512.1.2 嵌入式小型物联网操作系统 17612.1.3 嵌入式操作系统实时性特点 17812.2 μC/OS-II嵌入式操作系统 17812.2.1 μC/OS-II特性 17912.2.2 μC/OS-II主要代码说明 17912.2.3 μC/OS-II的启动过程 18112.3 μC/OS-II操作系统移植 18112.3.1 移植规划 18112.3.2 编写OS_CPU.H 18212.4 μC/OS-II内核结构 18412.4.1 μC/OS-II的任务状态 18412.4.2 任务控制块OS_TCB 18512.4.3 μC/OS-II的任务调度 18612.4.4 μC/OS-II的任务切换 18712.4.5 μC/OS-II的中断处理 18812.5 μC/OS-II任务、时间及事件控制块 18812.5.1 任务管理 18812.5.2 时间管理 18912.5.3 事件控制块 19112.6 互斥信号量(Mutex) 19212.6.1 互斥信号量介绍 19212.6.1 互斥信号量实例 19212.7 信号量 19412.7.1 概述 19412.7.2 信号量任务同步实例 19512.7.3 信号量资源共享实例 19712.7.4 中断服务程序与任务同步实例 19812.8 事件标志组 20012.8.1 概述 20012.8.2 事件标志组操作 20112.9 消息邮箱 20212.9.1 概述 20212.9.2 消息邮箱操作 20312.10 消息队列 20512.10.1 概述 20512.10.2 消息队列操作 20612.11 动态内存管理 20712.11.1 概述 20712.11.2 动态内存管理操作实例 207习题12 208第13章 综合设计实例 20913.1 嵌入式系统开发流程 20913.2 嵌入式系统开发实例 21013.2.1 小车系统及整体设计 21013.2.2 硬件设计说明 21013.2.3 软件设计说明 214习题13 219参考文献 220