![]()
内容推荐 全书以STM32F103系列微控制器为硬件核心,采用HAL库和嵌入式操作系统RT-Thread两条主线层次递进地介绍嵌入式系统原理与应用。全书共16章,第一部分内容包括嵌入式背景、寄存器模式开发,HAL库开发GPIO、中断系统、定时器和蜂鸣器、数码管和按键、DMA、通用异步通信、模数转换和数模转换、RTC时钟和电源控制及实践项目多功能电子钟。第二部分内容包括RTT基础、线程管理、中断管理、定时器以及内存管理、信号量、互斥量、事件集、邮箱、消息队列及实践项目步进电机控制。第三部分介绍嵌入式物联网实战。 本书的适用对象广泛,可作为高等学校各专业本科生电子科学技术、自动化、机电一体化、物联网等专业嵌入式课程的教材,也适用于对STM32微控制器及RTT操作系统感兴趣的广大读者阅读。 目录 目录
第1章ARM CortexM3嵌入式系统1 1.1嵌入式系统概述1 1.1.1嵌入式系统的定义和特点1 1.1.2嵌入式系统的应用领域1 1.2ARM与STM32概述2 1.2.1ARM简介2 1.2.2STM323 1.2.3微控制器软件接口标准6 1.3嵌入式系统的软件6 1.3.1不使用操作系统的嵌入式软件6 1.3.2使用操作系统的嵌入式软件7 1.4学习STM32的方法8 练习题10
第2章使用寄存器模式开发11 2.1STM32F1系统架构11 2.2STM32F1存储器系统12 2.2.1存储器组织12 2.2.2存储器映射13 2.3通用输入/输出14 2.3.1STM32F1通用输入/输出简介14 2.3.2GPIO的位结构16 2.3.3GPIO的工作模式17 2.3.4GPIO的寄存器20 2.4复位和时钟控制23 2.4.1RCC框图24 2.4.2RCC的主要作用25 2.4.3RCC_APB2ENR寄存器26 2.5寄存器编程模式点亮LED灯示例27 2.5.1硬件设计27 2.5.2工程文件分析27 2.5.3用户文件31 2.5.4配置下载调试工具33 2.5.5编译下载33 练习题34
第3章使用HAL库开发GPIO35 3.1STM32CubeMX概述35 3.2STM32 HAL库35 3.2.1HAL固件库简介35 3.2.2HAL库文件36 3.3GPIO的HAL库用法39 3.3.1GPIO寄存器结构体GPIO_TypeDef39 3.3.2GPIO初始化结构体GPIO_InitTypeDef40 3.3.3GPIO相关HAL库函数41 3.4STM32CubeMX应用示例44 3.4.1硬件设计44 3.4.2STM32CubeMX工程配置44 3.4.3main文件解析50 3.4.4编译下载53 练习题54
第4章STM32中断系统55 4.1中断的基本概念55 4.2STM32F103的中断系统56 4.2.1中断和异常向量56 4.2.2嵌套向量中断控制器59 4.2.3中断优先级59 4.2.4中断服务处理61 4.2.5NVIC相关HAL库函数63 4.3外部中断/事件控制器65 4.3.1外部中断/事件控制器简介65 4.3.2外部中断/事件线66 4.4外部中断控制示例67 4.4.1STM32CubeMX工程配置67 4.4.2中断配置与中断服务函数68 4.4.3用户代码70 4.4.4下载验证71 练习题71
第5章定时器与蜂鸣器72 5.1STM32F103定时器概述72 5.2基本定时器原理72 5.3定时器的HAL库用法75 5.3.1定时器寄存器结构体TIM_TypeDef75 5.3.2定时器句柄结构体TIM_HandleTypeDef76 5.3.3TIM相关HAL库函数77 5.4基本定时器应用示例78 5.4.1STM32CubeMX工程配置78 5.4.2定时器配置与中断服务函数79 5.4.3用户代码81 5.4.4下载验证82 5.5蜂鸣器发出不同频率声音应用示例82 5.5.1蜂鸣器简介82 5.5.2动态调整定时器输出频率83 5.6定时器PWM输出86 5.6.1PWM简介86 5.6.2简单音乐播放示例87 5.7系统嘀嗒定时器91 5.7.1系统嘀嗒定时器简介91 5.7.2延时函数HAL_Delay的实现原理93 练习题94
第6章串口通信与DMA95 6.1数据通信的基本概念95 6.1.1数据通信方式95 6.1.2串行通信简介95 6.2STM32F1的USART 96 6.2.1USART介绍96 6.2.2USART的工作原理97 6.2.3USART中断控制99 6.3串口的HAL库用法101 6.3.1串口寄存器结构体USART_TypeDef101 6.3.2串口句柄结构体UART_HandleTypeDef101 6.3.3USART相关HAL库函数102 6.4USART1接收不定长数据及回显示例104 6.4.1STM32CubeMX工程配置104 6.4.2串口配置及中断服务函数106 6.4.3重定义printf函数109 6.4.4用户代码109 6.4.5下载验证111 6.5直接存储器存取111 6.5.1直接存储器存取简介111 6.5.2STM32F103的DMA112 6.5.3DMA寄存器结构体DMA_Channel_TypeDef114 6.5.4DMA句柄结构体DMA_HandleTypeDef115 6.6串口DMA控制116 6.6.1串口DMA发送116 6.6.2串口DMA接收117 6.6.3USART DMA相关HAL库函数117 6.7USART1的DMA通信示例118 6.7.1STM32CubeMX工程配置118 6.7.2串口配置代码119 6.7.3用户代码121 6.7.4下载验证122 练习题123
第7章模数转换与数模转换124 7.1ADC简介124 7.2STM32F103的ADC125 7.2.1ADC模块结构125 7.2.2ADC的分组及数据对齐126 7.2.3ADC触发与启动127 7.2.4ADC时钟与转换时间127 7.2.5ADC的转换模式128 7.2.6ADC中断和DMA请求129 7.2.7ADC校准130 7.3ADC的HAL库用法130 7.3.1ADC寄存器结构体ADC_TypeDef130 7.3.2ADC句柄结构体ADC_HandleTypeDef130 7.3.3ADC相关HAL库函数131 7.4ADC应用示例133 7.4.1硬件设计133 7.4.2STM32CubeMX工程配置133 7.4.3ADC1配置代码134 7.4.4用户代码137 7.4.5下载验证138 7.5DAC简介138 7.6STM32F103的DAC工作原理139 7.6.1DAC模块结构139 7.6.2DAC数据格式与转换启动140 7.6.3DAC的触发选择141 7.6.4DAC的输出电压141 7.6.5DAC的DMA请求141 7.7DAC的HAL库用法141 7.7.1DAC寄存器结构体DAC_TypeDef141 7.7.2DAC规则通道结构体定义DAC_ChannelConfTypeDef142 7.7.3DAC相关HAL库函数143 7.8简易波形发生器示例144 7.8.1STM32CubeMX工程配置144 7.8.2DAC配置代码145 7.8.3用户代码148 7.8.4下载验证150 练习题151
第8章实时时钟与电源控制152 8.1实时时钟(RTC)152 8.1.1RTC简介152 8.1.2BCD码简介152 8.1.3STM32F1的RTC153 8.2备份寄存器154 8.3RTC的HAL库用法155 8.3.1RTC寄存器结构体RTC_TypeDef155 8.3.2RTC句柄结构体RTC_HandleTypeDef155 8.3.3RTC相关的结构体156 8.3.4RTC相关HAL库函数157 8.4实时时钟应用示例159 8.4.1硬件设计160 8.4.2STM32CubeMX工程配置160 8.4.3RTC配置代码162 8.4.4用户代码164 8.4.5下载验证165 8.5STM32F103电源控制166 8.5.1STM32F103的电源系统166 8.5.2低功耗模式167 8.6PWR的HAL库用法168 8.6.1PWR寄存器结构体PWR_TypeDef168 8.6.2WFI和WFE命令168 8.6.3进入低功耗模式库函数169 8.7电源控制应用示例170 8.7.1硬件设计170 8.7.2STM32CubeMX工程配置170 8.7.3用户代码171 8.7.4下载验证175 练习题176
第9章HAL库开发实例——电子钟系统177 9.1电子钟系统设计概况177 9.2LED数码管动态显示驱动程序设计178 9.2.1LED数码管及动态显示原理178 9.2.2数码管输出接口设计180 9.3通用按键驱动程序设计183 9.3.1按键基本介绍183 9.3.2按键输入接口设计184 9.4RTC驱动程序设计189 9.5简单的多任务时间片轮询框架191 9.6电子钟应用系统示例193 9.6.1STM32CubeMX工程配置193 9.6.2工程添加板级支持包193 9.6.3用户代码195 9.6.4下载验证198 练习题199
第10章嵌入式操作系统RTThread Nano200 10.1RTThread Nano简介200 10.2在MDK中移植RTThread Nano201 10.2.1移植RTThread Nano的步骤201 10.2.2编写第一个RTThread Nano应用205 10.2.3RTThread程序的运行方法206 10.3RTThread的启动流程210 10.3.1扩展main210 10.3.2进入main211 10.4RTThread的线程管理212 10.4.1线程与线程管理212 10.4.2组成线程的三要素212 10.4.3线程的重要属性214 10.4.4默认启动的线程216 10.4.5线程管理API函数217 10.4.6线程管理示例219 10.4.7线程管理应用小结222 10.5RTThread的时钟管理222 10.5.1RTThread的时钟节拍222 10.5.2RTThread的软件定时器223 10.5.3软件定时器管理API函数224 10.5.4软件定时器应用示例227 10.6RTThread内存管理229 10.6.1内存管理概述229 10.6.2内存堆管理之小内存管理230 10.6.3内存堆管理API函数232 10.6.4内存池管理233 10.6.5内存池管理API函数235 10.6.6内存堆与内存池管理应用示例237 10.7RTThread中断管理241 10.7.1RTThread中断工作机制241 10.7.2中断处理示例243 10.7.3全局中断开关243 10.7.4全局中断开关示例244 练习题245
第11章RTThread线程间同步与通信246 11.1线程间同步与通信简介246 11.2信号量247 11.2.1信号量的概念及工作机制247 11.2.2RTThread信号量控制块248 11.2.3信号量管理API函数249 11.2.4信号量应用场合252 11.2.5信号量应用示例253 11.3互斥量256 11.3.1互斥量的概念及工作机制256 11.3.2线程优先级反转与继承257 11.3.3死锁259 11.3.4RTThread互斥量控制块259 11.3.5互斥量管理API函数260 11.3.6互斥量应用场合262 11.3.7互斥量应用示例263 11.4事件集266 11.4.1事件集的概念及工作机制266 11.4.2RTThread事件集控制块267 11.4.3事件集管理API函数267 11.4.4事件集应用示例270 11.5邮箱273 11.5.1邮箱的概念及工作机制273 11.5.2RTThread邮箱控制块274 11.5.3邮箱管理API函数275 11.5.4邮箱的典型用法278 11.5.5邮箱应用示例279 11.6消息队列283 11.6.1消息队列的概念及工作机制283 11.6.2RTThread消息队列控制块284 11.6.3消息队列管理API函数284 11.6.4消息队列应用示例289 练习题292
第12章RTThread应用实践——步进电机控制294 12.1步进电机控制系统设计目标294 12.2步进电机28BYJ48294 12.2.1步进电机简介294 12.2.2步进电机驱动电路295 12.2.3步进电机的控制原理295 12.3步进电机28BYJ48控制软件设计296 12.3.1步进电机驱动设计296 12.3.2按键控制电机设计301 12.3.3数码管显示电机信息设计303 12.3.4串口输出电机信息设计305 12.3.5蜂鸣器鸣响设计306 12.3.6电机控制系统主函数307 12.4步进电机控制示例结果308 练习题309
第13章嵌入式物联网基础实战311 13.1TCP/IP协议简介311 13.2简单的TCP/IP协议栈312 13.3ENC28J60网卡移植313 13.3.1初始化ENC28J60314 13.3.2实现ENC28J60的操作函数317 13.3.3接收网络数据包318 13.3.4网卡移植测试321 13.4TCP/IP协议栈分层实验324 13.4.1ARP协议实验324 13.4.2IP&ICMP协议实验330 13.4.3UDP协议实验336 13.4.4TCP协议实验339 13.5嵌入式Web服务器344 13.5.1HTTP协议简介344 13.5.2Web服务器实验345 练习题347 |