内容简介
《从0开始教你学STM32》以引导读者快速全面掌握STM32系列嵌入式微控制器为目的,由浅入深地带领大家进入STM32的世界。本书详细介绍了STM32F103最小系统、寄存器及存储器、最小系统管理、中断和事件、汇编语言编程方法、汇编语言工程项目、Thumb��2指令集、伪指令、C语言编程方法、混合编程方法、通用外部端口GPIO和复用外部端口AFIO、模拟/数字转换器ADC、通用异步同步收发器USART等。
《从0开始教你学STM32》非常适合STM32F10x嵌入式微控制器的初学者,以及有一定嵌入式应用基础的电子工程技术人员参考,也可作为高等院校电子信息、自动控制等专业的教学和科研开发参考书。
内页插图
目录
第1章 概述1.1STM32F1xx系列概述1.1.1STM32F1xx的多个子系列1.1.2STM32F1xx系列特点1.1.3内核简介1.2封装1.3接口1.4选型指南1.5开发环境第2章 STM32F103最小系统2.1最小系统设计2.1.1最小系统2.1.2电源2.1.3复位控制2.1.4系统启动模式2.1.5振荡器2.2JTAG接口第3章寄存器及存储器3.1内部通用工作寄存器3.2ST.M32F1xx存储器空间3.2.1存储器映像3.2.2外设管理寄存器3.2.3内嵌Flash存储器3.2.4内嵌SRAM存储器3.2.5系统存储器3.3堆栈及栈区3.4数据格式3.4.1数据的大端和小端3.4.2地址对准3.5位段(bit-banding)操作3.5.1位操作概念和位操作分区3.5.2位段操作3.5.3位段操作应用举例第4章 最小系统管理4.1电源系统管理4.1.1电压监测器PVD4.1.2低功耗模式4.1.3实时时钟的自动唤醒AWU方式4.1.4电源控制寄存器组介绍4.2 复位系统4.2.1系统复位4.2.2系统复位源的识别和应用4.2.3外部设备复位4.3时钟系统管理4.3.1独立看门狗(IWDG)时钟4.3.2实时时钟RTC4.3.3系统主时钟4.3.4外部设备时钟4.3.5输出时钟源4.3.6时钟管理寄存器组……第5章 中断和事件第6章 汇编语言编程方法第7章 汇编语言工程项目第8章 Thumb-2指令集第9章 伪指令第10章 C语言编程方法第11章 混合编程方法第12章 通用外部端口GPl0和复用外部端口AFIo第13章 模拟/数字转换器ADC
前言/序言
我学过和使用过很多种微处理器,但还是对STM32系列情有独钟,在应用了几次这种芯片之后,很想向广大初学者推荐这个系列产品。
STM32系列是一款以ARM为核的微处理器系列,其内核是高档的ARM Cortex�睲3体系结构。STM32系列微处理器成员比较多,既包含高性能外围复杂的芯片,也包含高性能小封装的芯片,其中小封装的芯片以价格低廉、性能优良而著称,在很多场合可以替代高端的单片机。
学习这个系列的微处理器,对于初学者建议如下。
1.使用寄存器编程方法,而不是函数库编程方法
STM32系列软件编程有两种方法:一种是传统的编程方法,称为寄存器方法,就是学习使用微处理器的寄存器,并通过对寄存器的操作实现编程;另一种称为函数库方法,就是使用厂家提供的函数库编程,这种方法不需要学习微处理器的寄存器。
之所以推荐使用寄存器方法,主要原因如下:
① 寄存器编程方法是普遍应用的方法。这种编程方法,对所有微处理器都适用,因此学会这种方法对学习其他微处理器会有所帮助;而函数库编程方法只是针对这一系列微处理器适用,对学习其他微处理器则没有帮助。
② 寄存器编程方法是一种底层的、与硬件相关的方法。在使用中需要对微处理器的硬件和寄存器进行认真的学习,有助于了解各种微处理器及其应用;而即使能够很熟练地应用函数库方法,也无法了解微处理器的细节,对深入学习没有多大帮助。
③ 如果对微处理器的寄存器了解不够,那么在使用函数库方法时遇到困难就无法解决。
总之,寄存器编程方法是最基本的方法,具有普遍性,因此本书建议初学者从学习这一方法出发,以STM32微处理器为入门芯片,开始学习微处理器的应用,特别是ARM系列微处理器的应用。
2. 学习微处理器,重要的是实践,因此需要找一套仿真环境软件
仿真环境建议使用Keil公司的μVision,或者称为RealView,这套软件易于学习,一般试用版也较易获得。在这个环境中,可以编辑、编译C语言和汇编语言源程序,也可以仿真调试程序,提高自己的实战水平。
在使用时,注意需要正确设置环境。
3. 如果熟悉了上述仿真软件,还需要找一套仿真器
现在,一套STM32的仿真器价格很低,这是学习的基础。一般情况下,STM32芯片的仿真器可以仿真很多芯片,因此还会有很多其他用途。仿真器都是JTAG接口的,结构简单。
4. 实验产品或实验板
自己可以提出一个目标产品作为学习实验使用,目标产品不要太复杂,从原理设计到PCB板制作,从焊接到调试,完成一个完整的研发过程,对学习是十分有帮助的;也可以自己购买一块实验板,这样成本会低一些,购买实验板时,建议只购买最简单的实验板,这样的实验板上只有一片STM32芯片,不需要其他外部附件。
在这个实验板的基础上,飞线连接一些基本部件,比如键盘、LED管,使用电位器为A/D实验提供信号源、外部开关等,非常简单而实用。
感谢我的同事郑玉峰、周春来、刘晓波、赵丽、孙蓬蛟、王庚兰、赵泽以及我的朋友吴乌恩、程宁等的支持。
赵星寒
2014年7月于北京前言
《嵌入式开发从入门到精通:STM32微控制器实战指南》 内容简介 您是否曾对那些小巧而功能强大的电子设备着迷?它们是如何感知世界、做出决策并与我们互动的?这一切的背后,往往隐藏着一颗颗强大的“大脑”——微控制器。而在众多微控制器家族中,STM32以其卓越的性能、丰富的资源和广泛的应用领域,成为了嵌入式开发领域炙手可热的选择。 本书旨在为您打开STM32嵌入式开发的大门,带您从零开始,一步步掌握STM32微控制器的核心技术,并最终能够独立完成复杂的嵌入式项目。我们不会简单地罗列枯燥的理论知识,而是将理论与实践紧密结合,通过大量的实例,让您在“玩”中学习,在“做”中领悟。 本书亮点 系统性学习路径: 本书遵循循序渐进的学习原则,从最基础的嵌入式系统概念、STM32微控制器架构出发,逐步深入到外设配置、中断处理、实时操作系统(RTOS)应用,直至高级主题如通信协议和项目开发流程。无论您是初学者还是有一定基础的开发者,都能找到适合自己的学习节奏。 实战驱动,拒绝纸上谈兵: 我们深知实践是检验真理的唯一标准。因此,本书精心设计了贯穿全书的实战案例,涵盖了从简单的LED闪烁到复杂的传感器数据采集、电机控制、网络通信等典型应用。每个案例都力求贴近实际开发需求,让您学到的知识能够直接转化为解决问题的能力。 深入浅出,通俗易懂的讲解: 复杂的概念我们力求用最直观、最易懂的方式呈现。通过大量的图解、流程图和代码注释,帮助您快速理解STM32的工作原理和开发流程。即使您对硬件和编程接触不多,也能轻松上手。 精选核心外设,覆盖主流应用: 本书重点讲解STM32系列中最常用、最核心的硬件外设,如GPIO、USART、SPI、I2C、ADC、DAC、定时器、PWM等。这些外设是绝大多数嵌入式应用的基础,掌握它们,就意味着您能够应对绝大多数的开发挑战。 RTOS应用,迈向复杂系统开发: 随着嵌入式系统复杂度的不断提升,实时操作系统(RTOS)的应用变得越来越普遍。本书将引导您学习FreeRTOS等主流RTOS,理解任务调度、消息队列、信号量等核心概念,让您能够构建更加健壮、高效的嵌入式系统。 项目开发流程指导: 除了技术细节,本书还将为您提供完整的项目开发流程指导,包括需求分析、方案设计、硬件选型、软件架构、代码实现、调试测试等环节。让您在掌握技术的同时,也能够规范自己的开发行为,提升项目管理能力。 必备开发工具详解: 本书将详细介绍STM32开发过程中必备的工具,如Keil MDK、STM32CubeMX、J-Link/ST-Link等,并演示如何正确配置和使用它们,帮助您高效地搭建开发环境。 本书内容概览 第一部分:STM32基础入门 第一章:嵌入式系统与微控制器概述 什么是嵌入式系统? 嵌入式系统的组成部分。 微控制器的概念与分类。 ARM Cortex-M内核架构简介。 STM32家族产品线概览。 第二章:STM32开发环境搭建 硬件选型:STM32开发板介绍。 软件安装:Keil MDK/STM32CubeIDE安装与配置。 STM32CubeMX工具使用入门:配置工程、生成代码。 烧录与调试工具:J-Link/ST-Link使用。 第三章:STM32核心架构与寄存器 STM32存储器映射。 CPU内核、时钟系统、复位与电源管理。 GPIO(通用输入输出)端口详解:配置、读写。 寄存器操作基础:直接操作寄存器与HAL库。 第一个STM32程序:点亮LED。 第二部分:STM32核心外设应用 第四章:中断系统深度解析 中断的概念与原理。 NVIC(嵌套向量中断控制器)详解。 外部中断配置与应用。 中断优先级与中断嵌套。 利用中断实现按键检测。 第五章:定时器与PWM控制 STM32定时器架构。 通用定时器:定时、计数、溢出中断。 PWM(脉冲宽度调制)输出:控制LED亮度、舵机角度。 高级定时器:死区生成、互补输出。 定时器应用实例:秒表、呼吸灯。 第六章:串行通信接口(UART/USART) UART/USART工作原理。 STM32 USART配置与串口通信。 波特率、数据位、停止位、校验位。 中断式串口接收与发送。 与PC通过串口助手通信。 UART扩展应用:多机通信。 第七章:同步串行通信(SPI) SPI协议详解:主从模式、时钟极性与相位。 STM32 SPI接口配置。 SPI通信实例:连接SPI接口的传感器(如LCD屏幕、SD卡)。 第八章:I2C串行通信 I2C协议详解:主从模式、地址机制。 STM32 I2C接口配置。 I2C通信实例:连接I2C接口的传感器(如温湿度传感器、EEPROM)。 第九章:模数转换(ADC)与数模转换(DAC) ADC工作原理:采样、量化、编码。 STM32 ADC配置:单次转换、连续转换、DMA传输。 ADC应用:读取电位器、传感器模拟信号。 DAC工作原理。 STM32 DAC配置与应用:生成音频信号。 第三部分:高级应用与系统开发 第十章:DMA(直接内存访问) DMA工作原理与优势。 STM32 DMA控制器配置。 DMA在ADC、UART、SPI中的应用:提升数据传输效率。 第十一章:实时操作系统(RTOS)入门 RTOS的概念与必要性。 FreeRTOS简介:任务、调度器、队列、信号量。 在STM32上移植与配置FreeRTOS。 RTOS多任务编程实践。 第十二章:网络通信基础(Ethernet/Wi-Fi) 嵌入式网络通信概述。 STM32 Ethernet接口硬件接口与驱动。 TCP/IP协议栈概念。 (可选)Wi-Fi模块与STM32的通信方式(如AT指令)。 简单网络应用示例。 第十三章:STM32项目开发流程与技巧 嵌入式项目开发生命周期。 需求分析与方案设计。 硬件选型与原理图设计基础。 软件架构设计与模块化开发。 代码调试与问题排查技巧。 版本控制工具(如Git)的应用。 第四部分:典型项目实战 第十四章:智能家居温湿度监测与显示系统 结合DHT11/DHT22传感器、OLED/LCD显示屏、STM32实现。 第十五章:基于STM32的电机驱动与控制 使用PWM控制直流电机转速、方向。 (可选)编码器反馈测速。 第十六章:简单的网络数据采集终端 利用Ethernet或Wi-Fi模块将传感器数据上传至服务器。 本书特色 大量的代码示例: 每个章节都配有可直接运行的代码,并附带详细注释,帮助您理解每一行代码的含义。 丰富的图示与表格: 复杂的技术概念通过图示和表格清晰地呈现,降低学习难度。 实用的调试技巧: 引导读者掌握常见的调试方法,快速定位和解决问题。 扩展阅读与资源推荐: 在每个章节的末尾,提供相关的扩展阅读材料和有用的在线资源链接。 适用人群 对嵌入式开发感兴趣的初学者。 希望系统学习STM32微控制器的在校学生。 需要将STM32应用于实际项目的工程师。 希望提升嵌入式开发技能的开发者。 无论您是怀揣着对电子世界的无限好奇,还是立志于成为一名优秀的嵌入式工程师,本书都将是您宝贵的伙伴。让我们一同踏上STM32的探索之旅,用代码点亮创新的火花!