
本书以STM32系列32位Flash MCU为例,以“蓝桥杯”嵌入式设计与开发竞赛实训平台为硬件平台,以“一切从简单开始”为宗旨,介绍ARM Cortex-M3系统的设计与实现。 全书分为12章,第1章简单介绍STM32 MCU和SysTick,第2章介绍软件开发环境与工具,第3~8章分别介绍GPIO、USART、SPI、I2C、ADC和TIM的配置、库函数及设计实例,第9、10章分别介绍NVIC、DMA的配置及设计实例,第11、12章分别介绍STM32G431、STM32L071程序设计。书后附有引脚和库函数表,方便查询;还附有实验指导,方便实验教学,利用Keil的仿真功能,可以实现线上教学。
第3版前言 为了适应技术和时代的发展,第3版主要在以下方面进行了更新: (1)将标准库和寄存器编程更新为HAL和LL编程。 (2)增加了软件开发环境与工具介绍。 (3)增加了STM32G431和STM32L071程序设计。 全书分为12章,以“蓝桥杯”嵌入式设计与开发竞赛试题为主线,第1章简单介绍STM32 MCU和SysTick,第2章介绍软件开发环境与工具,第3~8章分别介绍GPIO、USART、SPI、I2C、ADC和TIM的配置、库函数及设计实例,第9、10章分别介绍NVIC、DMA的配置及设计实例,第11、12章分别介绍STM32G431、STM32L071程序设计。 第1章介绍STM32 MCU和SysTick的结构,重点介绍复位和时钟控制(RCC)及SysTick库函数,方便后续章节的使用。 第2章介绍软件开发环境与工具,包括软件开发包(SDK)、软件配置工具STM32CubeMX和集成开发环境(IDE),重点介绍HAL和LL工程的调试与分析。 第3章和第4章分别在介绍GPIO和USART结构、配置及库函数的基础上,以嵌入式设计与开发竞赛实训平台为硬件平台,使用HAL和LL两种软件设计方法,介绍GPIO和USART的软件设计与实现,重点介绍设计的调试与分析。 第5章和第6章分别介绍SPI和I2C的结构、配置、库函数及设计实例。SPI的编程操作和USART相似,软件设计实例主要实现SPI的环回。I2C的编程操作相对复杂一些,设计实例用两种方法通过I2C读/写2线串行EEPROM实现。 第7章和第8章分别介绍ADC和TIM的结构、配置、库函数及设计实例。ADC设计实例用规则通道实现外部输入模拟信号的模数转换,用注入通道实现内部温度传感器的温度测量。TIM设计实例用TIM1和TIM3输出PWM波,用TIM2测量PWM的周期和脉冲宽度。 第9章和第10章分别介绍NVIC和DMA的配置及设计实例。中断和DMA是高效的数据传送控制方式,对前面介绍的接口和设备数据传送查询方式稍做修改即可实现中断功能,再结合DMA可以实现数据的批量传送。 第11章和第12章在介绍系统配置的基础上,分别介绍STM32G431和STM32L071程序设计。STM32G431包括GPIO、USART、I2C、ADC和TIM程序设计,STM32L071包括GPIO、I2C、SPI和USART程序设计。 书末附有STM32引脚功能、常用库函数和竞赛实训平台介绍等实用资料供读者参考,还包含实验指导以方便实验教学,利用Keil的仿真功能,可以实现线上教学。 本书所有设计程序均为原创,并在竞赛实训平台、STM32CubeMX V6.2.0和Keil V5.36环境下测试通过。 参与本书编写及程序调试的还有王玉花和王靖懿。在本书的出版过程中,得到了电子工业出版社赵玉山先生的支持,在此表示衷心的感谢。 由于编著者水平所限,书中难免会有不妥之处,敬请广大读者批评指正。 E-mail:cortex_m3@126.com,QQ群:STM32学习(489189201)。
目 录 第1章 STM32 MCU简介 (1) 1.1 STM32 MCU结构 (2) 1.2 STM32 MCU存储器映像 (3) 1.3 STM32 MCU系统时钟树 (4) 1.4 Cortex-M3简介 (6) 第2章 软件开发环境与工具 (9) 2.1 软件开发包(SDK) (9) 2.2 软件配置工具STM32CubeMX (10) 2.3 集成开发环境(IDE) (16) 2.3.1 MDK-ARM安装 (16) 2.3.2 MDK-ARM使用 (17) 2.3.3 HAL工程调试与分析 (22) 2.3.4 LL工程调试与分析 (26) 第3章 通用并行接口GPIO (30) 3.1 GPIO结构及寄存器 (30) 3.2 GPIO配置 (31) 3.3 GPIO库函数 (33) 3.3.1 GPIO HAL库函数 (33) 3.3.2 GPIO LL库函数 (34) 3.4 GPIO设计实例 (36) 3.4.1 HAL库函数软件设计与实现 (37) 3.4.2 LL库函数软件设计与实现 (41) 3.5 GPIO设计调试 (45) 3.5.1 HAL库函数软件设计调试 (45) 3.5.2 LL库函数软件设计调试 (48) 3.6 LCD使用 (48) 3.6.1 LCD功能简介 (49) 3.6.2 LCD软件设计与实现 (50) 第4章 通用同步/异步收发器接口USART (57) 4.1 USART结构及寄存器 (57) 4.2 USART配置 (59) 4.3 USART库函数 (61) 4.3.1 USART HAL库函数 (61) 4.3.2 USART LL库函数 (63) 4.4 USART设计实例 (65) 4.5 USART设计调试与分析 (67) 第5章 串行设备接口SPI (69) 5.1 SPI结构及寄存器 (69) 5.2 SPI配置 (71) 5.3 SPI库函数 (74) 5.3.1 SPI HAL库函数 (74) 5.3.2 SPI LL库函数 (75) 5.4 SPI设计实例 (76) 第6章 内部集成电路总线接口I2C (80) 6.1 I2C结构及寄存器 (80) 6.2 I2C配置 (82) 6.3 I2C库函数 (83) 6.3.1 I2C HAL库函数 (84) 6.3.2 I2C LL库函数 (86) 6.4 I2C设计实例 (88) 第7章 模数转换器ADC (92) 7.1 ADC结构及寄存器 (92) 7.2 ADC配置 (95) 7.3 ADC库函数 (98) 7.3.1 ADC HAL库函数 (98) 7.3.2 ADC LL库函数 (101) 7.4 ADC设计实例 (104) 第8章 定时器TIM (107) 8.1 TIM结构及寄存器 (107) 8.2 TIM配置 (111) 8.3 TIM库函数 (117) 8.3.1 TIM HAL库函数 (117) 8.3.2 TIM LL库函数 (120) 8.4 TIM设计实例 (123) 第9章 嵌套向量中断控制器NVIC (128) 9.1 NVIC简介和配置 (128) 9.2 EXTI中断 (133) 9.3 USART中断 (138) 第10章 直接存储器存取DMA (140) 10.1 DMA简介及配置 (140) 10.2 USART的DMA操作 (144) 第11章 STM32G431程序设计 (146) 11.1 系统配置 (146) 11.1.1 STM32CubeMX配置 (146) 11.1.2 Keil配置 (150) 11.2 GPIO程序设计 (151) 11.3 USART程序设计 (159) 11.4 I2C程序设计 (162) 11.5 ADC程序设计 (169) 11.6 TIM程序设计 (174) 第12章 STM32L071程序设计 (177) 12.1 系统配置 (177) 12.1.1 STM32CubeMX配置 (177) 12.1.2 Keil配置 (180) 12.2 GPIO程序设计 (181) 12.3 I2C程序设计 (187) 12.4 SPI程序设计 (193) 12.4.1 LoRa模块简介 (195) 12.4.2 LoRa软件设计与实现 (200) 12.5 USART程序设计 (204) 附录A STM32引脚功能 (207) 附录B STM32常用库函数 (221) 附录C CT117E嵌入式竞赛实训平台 (229) 附录D CT117E-M4嵌入式竞赛实训平台 (234) 附录E CT127C物联网竞赛实训平台 (237) 附录F ASCII码表 (240) 附录G C语言运算符 (241) 附录H 实验指导 (242) 实验1 软件开发环境 (242) 实验2 GPIO程序设计 (242) 实验3 LCD程序设计 (243) 实验4 USART程序设计 (244) 实验5 SPI程序设计 (245) 实验6 I2C程序设计 (245) 实验7 ADC程序设计 (246) 实验8 TIM程序设计 (247) 实验9 NVIC程序设计 (247) 实验10 DMA程序设计 (248) 参考文献 (249) 使用软件 (250)
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0441080