版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章如何学习STM32如何学习STM321本章学习内容STM32的基本架构和基本原理学习STM32的基本方法学习STM32需要的工具或平台STM32程序开发的几种模式STM32的基本架构和基本原理学习STM32的基本方法主要内容重点难点如何学习STM322STM32的基本架构和基本原理
如果你有8位单片机的学习、应用经历,你又熟练掌握C语言,那么你一点不用怕,学会和掌握STM32单片机并不难,有人说难,其实只是“传说”。
如果没有学过8位单片机,直接开始学STM32,也不可怕。关键是要“得法”:先粗后细、先大后小。当然,C语言是必须的!如何学习STM323STM32的基本架构和基本原理
要弄懂STM32的基本原理,必须基本弄清楚以下三个问题:一、STM32的内部结构二、STM32时钟树
三、典型型号STM32F103及其特性STM32内部有哪些东西?分别有啥用?如何才能让它工作?(初始化、时钟设置、工作流程)如何学习STM324STM32的基本架构和基本原理STM32跟其他单片机一样,是在一个芯片上集成了计算机或微控制器该有的基本功能部件。这些功能部件通过总线联在一起。这些功能部件主要包括:内核CPU,总线,系统时钟发生器,复位电路,程序存储器,数据存储器,中断控制,调试接口,以及各种功能部件(外设)。
不同的芯片系列和型号,外设的数量和种类也不一样,常见的外设有:输入输出接口GPIO、定时器TIMER/COUNTER、串行通信接口USART、串行总线I2C和SPI或I2S、SD卡接口SDIO、ADC、DAC等。如何学习STM325STM32的基本架构和基本原理内核CPU,系统时钟发生器,复位电路,程序存储器,数据存储器:相当于单片机最小系统总线:CPU与外设进行信息交互的通道,有多种中断控制:中断程序的优先级、使能设置调试接口:上位机调试与烧写程序的接口(仿真器接口)各种功能部件(外设):例如,输入输出GPIO、定时器TIMER、串行通信接口USART、串行总线I2C和SPI或I2S、ADC、DAC等,用以实现项目的有关功能如何学习STM326STM32的基本架构和基本原理STM32的内部结构示意图内核各种总线各种功能外设CPU通过相应的总线与功能外设进行信息交互如何学习STM327STM32的基本架构和基本原理STM32的内部结构示意图Cortex是ARM的全新一代处理器内核,它在本质上是ARMv7架构的实现,它完全有别于ARM的其他内核。按照三类典型的嵌入式系统应用,即高性能、微控制器、实时类,它又分成三个系列,即Cortex-A、Cortex-M、Cortex-R。STM32是意法半导体(ST)较早推向市场的基于Cortex-M内核的微处理器系列产品,该系列产品具有成本低、功耗优、性能高、功能多等优势,以系列化方式推出,方便用户选型,在市场上获得了广泛好评。STM32F1XX系列,STM32F4XX系列。前者Cortex-M3内核,后者Cortex-M4内核。如何学习STM328STM32的基本架构和基本原理STM32的内部结构示意图CPU通过各种总线与存储器、外设等进行信息交互(发送指令、读取状态、发送数据等)外设有:低速外设高速外设总线矩阵用于各种总线的匹配与交换Icode、Dcode、DMA、System、APB2、APB1等各种总线如何学习STM329STM32的基本架构和基本原理
CPU总线外设外设的工作速率通过各自的时钟设定程序通过设定外设的速度、中断方式、DMA方式、工作方式、等等实现系统功能工作方式通过初始化相关寄存器参数实现中断方式通过设置中断相关寄存器实现难在:寄存器的设置,因为:不同的外设拥有各自的寄存器,通常都有10个以上。相比于传统51单片机全部寄存器加起来只有30+,理解和使用的难度大大增加。不怕:ST公司通过固件库形式把寄存器的设置、操作简化了,即将对寄存器的操作通过“函数”封装起来。只要会使用函数,就应该能写程序!外设多每个外设寄存器多每个寄存器的每一位设置都有讲究中断与非中断方式差异大中断级数和中断数量多寄存器:可怕如何学习STM3210STM32典型型号——STM32F103ZET6
对于STM32F103xxyy系列,命名规则:第一个x代表引脚数:T-36pin,C-48pin,R-64pin,V-100pin,Z-144pin;第二个x代表Flash容量:6-32K,8-64K,B-128K,C-256K,D-384K,E-512K;第一个y代表封装:H-BGA封装,T-LQFP封装,U-QFN封装;第二个y代表工作稳度范围:6代表-40到85摄氏度,7代表-40到105摄氏度。STM32F表示通用类型产品子系列;STM32L表示低功耗产品子系列;STM32F0基于Cortex-M0+高性价比子系列;STM32F4表示更高性能子系列101=基本型,102=USB基本型,USB2.0全速设备
103=增强型,105或107=互联型引脚数目如何学习STM3211STM32典型型号——STM32F103ZET6
根据程序存储容量分为三大类:LD(小于64K),MD(小于256K),HD(大于256K)。STM32F103ZET6属第三类32
位微控制器,LQFP-144封装高达72M
的系统频率通过片内BOOT区,可实现串口下载程序(ISP)片内双RC
晶振,提供8MHz和40kHz
的频率支持片外高速晶振(8M),和片外低速晶振(32k)。其中片外低速晶振可用于
CPU
的实时时钟,带后备电源引脚,用于掉电后的时钟行走42个16位的后备寄存器(可以理解为电池保存的RAM)支持
JTAG、SWD调试,在J-LINK的配合下,实现高速低成本的开发调试如何学习STM3212STM32典型型号——STM32F103ZET6
3个共16通道的12位ADC,2个共2
通道的12位
DAC,支持片外独立电压基准。ADC转换速率最高可达1us。多达80个GPIO(大部分兼容5V逻辑);4个通用定时器,2个高级定时器,2个基本定时器;3路SPI接口;2路I2S
接口;2路I2C接口;5路USART;1个USB从设备接口;1个CAN接口;1个SDIO接口;可兼容SRAM、NOR和NANDFlash
接口的16位总线的可变静态存储控制器(FSMC)。工作电压范围:2.0~3.6V512K
片内FLASH(程序存储器)64K片内RAM(数据存储器)统一编址(STM32为哈佛结构)如何学习STM3213STM32的时钟树
在数字系统中,所有部件要正常工作,离不开时钟。STM32的时钟是学习、应用的难点和重点。难:
时钟系统复杂、灵活
时钟源多(片内、片外)
选择设置多样重:
每个外设都必须要使用时钟学习时钟首先从STM32的时钟类型入手,从理解几个重要的概念起步。时钟树:从时钟输入到输出的拓扑关系图
看懂
每种外设的时钟配置——掌握正确设置如何学习STM3214STM32的时钟树
要点一:内部RC振荡器与外部晶振的选择STM32可以选择:
内部时钟(内部RC振荡器)
外部时钟(外部晶振)内部8MHz的RC振荡器的误差在1%左右,内部RC振荡器的精度通常比用HSE(外部晶振)要低十倍以上。STM32的ISP就是利用HSI(内部RC振荡器)。使用内部时钟,要注意正确使用相关引脚:100脚、144脚的型号:OSC_IN应接地,OSC_OUT应悬空。少于100脚的产品,有2种接法:方法1:OSC_IN和OSC_OUT分别通过10K电阻接地。此法可提高EMC性能方法2:分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出0。此方法相对于方法1,可以减小功耗并节省2个外部电阻如何学习STM3215STM32的时钟树
要点二:五个时钟源——HSI、HSE、LSI、LSE、PLL——HSI是高速内部时钟,RC振荡器,频率为8MHz。——HSE是高速外部时钟,可接石英谐振器、陶瓷谐振器,或者直接外部时钟源,它的频率范围为4MHz~16MHz。——LSI是低速内部时钟,RC振荡器,频率为40kHz。——LSE是低速外部时钟,接频率为32.768kHz的石英晶体。——PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。如何学习STM3216STM32的时钟树
要点三:五个时钟概念SYSCLK:系统时钟,STM32大部分器件的时钟来源。主要由AHB预分频器分配到各个部件。
HCLK:由AHB预分频器直接输出得到,它是高速总线AHB的时钟信号,提供给存储器,DMA及Cortex内核,是Cortex内核运行的时钟,CPU主频就是这个信号,它的大小决定STM32运算速度、数据存取速度。
FCLK:由AHB预分频器输出得到,是内核的“自由运行时钟”(freerunningclock)。“自由”表现在它不来自时钟HCLK,因此在HCLK时钟停止时FCLK也继续运行。它保证在处理器休眠时,也能够采样到中断和跟踪休眠事件。它与HCLK互相同步。PCLK1:外设时钟,由APB1预分频器输出得到,最大频率为36MHz,提供给挂载在APB1总线上的外设(低速外设)。
PCLK2:外设时钟,由APB2预分频器输出得到,最大频率可为72MHz,提供给挂载在APB2总线上的外设(高速外设)。如何学习STM3217STM32的时钟树
要点四:读懂时钟树——从哪里来到哪里去从时钟树图中截取以下部分,举例说明时钟的使用如何学习STM3218STM32的时钟树
要点四:读懂时钟树——从哪里来到哪里去说明时钟输入与始终输出之间的关系,输入至输出之间有两种方案:——方案一:可表示为
①-②-③-④-⑤-⑥-⑦——方案二:可表示为①-⑤-⑥-⑦。最终到达形成(得到)APB2那么挂在APB2上的外设就可以使用方案1或2进行时钟的设定APB2总线上的外设有:(根据图1.1)GPIO_A-E、USART1、ADC1、ADC2、ADC3、TIM1、TIM8、SPI1、AFIO等,均为高速外设如何学习STM3219学STM32的最好方法是什么
学中做,做中学——边学边做
►初步了解STM32的内部结构和工作原理——粗线条►了解ST的固件库及其使用►先会使用现成的工程模板►从模仿点亮一个LED灯的程序开始,熟悉程序开发完整过程►在模仿的基础上,适当进行改造,例如:增加关闭功能,
从而进一步巩固开发过程,熟悉模板使用,基本理解固件
函数的应用方法►大胆写出自己的第一个程序:按键控制LED的点亮与熄灭要用到什么,就去学习什么,例如:要用到定时器就去看定时器的原理、设置,固件库函数及其使用。蚂蚁搬家式学习可降低困难,是学习的好方法。ST官方提供工程模板中有个帮助系统——范例学习,大赞!上述过程,让你找到感觉,建立信心如何学习STM3220学STM32需要哪些工具或平台
硬件平台和工具——►STM32实验板、JLINK仿真器、万用表►电烙铁、杜邦线一个简单实用的好的学习平台,会使你学习STM32之路充满愉悦和成就感。人手一套是极好的。所以,请你舍得投入!数字式万用表——►建议国产的品牌:VICTOR890(胜利牌,最常用的型号890C或D)►必须学会熟练使用。例如,测量电路通断,测量电压电烙铁——►建议国产的品牌:黄花岗30W内热电烙铁套装►必须熟练掌握焊接技术如何学习STM3221舍不得孩子套不住“狼”学STM32需要哪些工具或平台
可以是最小系统板。但必须具有JTAG或SWD仿真接口。淘宝上这样的实验板很多:价格从10几元到几百元不等,根据各自情况选用,能满足学习需要就行。STM32实验板——自制或购买淘宝网上看到的一款STM32最小系统板,零售价才19元。但是随带的资料很丰富,基本功能齐全,结构很完整、开放。具有JTAG和SWD两种仿真接口。自己喜欢就好如何学习STM3222学STM32需要哪些工具或平台
——CPU及其外围本书使用的STM32最小系统如何学习STM3223学STM32需要哪些工具或平台
——手动复位本书使用的STM32最小系统如何学习STM3224学STM32需要哪些工具或平台
——按键与指示灯本书使用的STM32最小系统如何学习STM3225学STM32需要哪些工具或平台
——JTAG接口本书使用的STM32最小系统如何学习STM3226JTAG接法
——电源电路学STM32需要哪些工具或平台
常用的型号是J-linkV8、V9、V10等JLINK仿真器——网上购买兼容型号,很便宜淘宝网上看到的一款仿制型JLINK仿真器(它的价格是约40元)具有JTAG和SWD两种仿真接口配上转接板(8元左右)即可使用SWD仿真接口如何学习STM3227STM32程序开发的4种模式
通常,单片机是通过一个死循环将需要实现的功能通过查询或中断的方式组织起来。这种架构模式适用于程序功能较为单一的应用场景。它具有原理简单、开发方便、容易理解等特点。是单片机初学者和一般开发者优先的方式。程序开发模式:►基于HAL库的开发►基于ST公司官方提供的固件库开发程序架构模式:►单任务大循环模式►嵌入式操作系统的模式然而,在单片机系统中嵌入操作系统适用于功能较为复杂的应用场景。这种方式在硬件要求较高,开发者必须全面掌握操作系统原理。不主张作为学习者优先方式。哥,我都怕死你了,我还会爱你吗?本节重点讨论STM32程序的这两种开发模式及其各自的特点注意比较如何学习STM3228STM32程序开发的4种模式
基于HAL库的开发模式——优点►
开发更加简便、高效►程序移植性好(更换不同型号芯片时)基于HAL库的开发模式——缺点►HAL库的函数嵌套和结构体多,占用程序空间大,效率相对较低►自主性弱(图形化的代码生成,对内部细节的把握就弱了)事物总是有两面性你爱她,就得容忍她的缺点。啊~啊&@#@&*!如果,你有不怕牺牲、克服困难的决心和毅力,你就爱她。那么,她会把心全部献给你——让你对STM32的底层彻底掌握,不再恐惧。恐惧之后不再恐惧!如何学习STM3229STM32程序开发的模式
基于寄存器的开发模式——要具备两个功夫►熟悉所使用的功能外设的初始化设置流程、读写方法►熟悉所涉及寄存器的功能、每个寄存器位的定义与作用基于寄存器的开发模式——读写操作方法赋值语句设置或获取相关寄存器的值爱我,你怕了吗?其实,不用怕,寄存器虽然多,虽然烦,但是只要有耐心,用到什么,去学习什么,分而治之,还是能攻克这个“堡垒”的!很多时候,我们是被道听途说的“传言”吓死的。如何学习STM3230STM32程序开发的模式
基于固件库的开发模式——优点►对硬件的理解要求相对较低,会调用函数就会写程序,容易上手►程序代码容错性好,后期维护相对简单基于固件库的开发模式——缺点►程序冗余较多,代码相对会大一些,运行速度相对会有所影响►从更深透掌握STM32内部原理的角度而言,不如寄存器模式为了快速入门,早点领略STM32的绰约风姿,你就选择我这种模式吧。这是多数初学者的选择,要相信群众。选择我,不后悔!如何学习STM3231STM32程序开发的模式
基于固件库的开发模式——要具备两个功夫►要有耐心,要学会看STM32的固件库官方手册和帮助系统的范例程序►要学会所用固件库函数的功能与调用基于固件库的开发模式——读写操作方法通过函数调用以设置或获取相关寄存器的值记住——耐心、细心、爱心是学好STM32的可爱品质如何学习STM3232STM32程序开发的模式
关于工程模板,我有话说——〓为什么要使用模板基于标准库和寄存器模式都要使用工程模板。良好的工程结构能让文件的管理更科学,让开发更容易更方便。使用具有合理结构的工程目录,当你着手于较大的软件项目时,类别分明、层次合理的工程目录结构会让你的开发管理化繁为简。〓寄存器模式下和固件库模式下的模板理论上说,两种模式下的模板应该不一样,可以不一样。对于初学者,先直接使用固件库模式下的模板作为两个模式下的工程模板。先不要花太多的精力在此上!如何学习STM3233STM32程序开发的模式
两种模式的比较——以点亮一个LED为例〓寄存器模式►ODR寄存器法GPIOE->ODR|=1<<5; //PE5、6初始化为高电平GPIOE->ODR|=1<<6; //PE5、6初始化为高电平
GPIOE->ODR&=0xFFFFFF9F; //PE5、6初始化为低电平►BSRR寄存器法GPIOE->BSRR|=0x00600000; //清零PE5,PE6►BRR寄存器法GPIOE->BRR|=0x00000060; //清零PE5,PE6系统初始化、GPIO初始化完成后,要点亮或关闭LED的本质是,使得LED对应的GPIO口线为高电平、低电平。以下是两种模式下使引脚输出高电平、低电平的实现方法。如何学习STM3234使用赋值运算实现STM32程序开发的模式
两种模式的比较——以点亮一个LED为例〓固件库模式►多个引脚同时GPIO_ResetBits(GPIOE,GPIO_Pin_5|GPIO_Pin_6);//PE5,PE6为低电平GPIO_SetBits(GPIOE,GPIO_Pin_5|GPIO_Pin_6); //PE5,PE6为高电平►单个引脚GPIO_WriteBit(GPIOA,GPIO_Pin_3,1);
//设置PA3高电平GPIO_WriteBit(GPIOA,GPIO_Pin_3,0);
//设置PA3低电平以下是固件库模式下使引脚输出高电平、低电平的实现方法。如何学习STM3235HAL库的文件结构
CMSIS、CMSIS文件夹、HAL库详见教材P12~P14如何学习STM3236基于HAL库开发中的几个概念
句柄详见教材P14~P16如何学习STM3237回调函数_weak函数修饰符时钟配置HAL_XXX_MspInit函数及其作用?思考一下两种模式的区别在哪里如何学习STM3238关于STM32的学习
我还有几句不得不说事非经过不知难,但——————还有一句事非经过不知易在岸上永远学不会游泳要边学边练,边学边干相信自己,Icando!信心比黄金还金贵心动不如行动COMEON!如何学习STM3239STM32的官方文档和手册是开发者的重要资源。这些文档详细介绍了STM32的架构、功能、开发工具和使用方法。开发者可以通过阅读官方文档,快速掌握STM32的开发技能,解决开发过程中遇到的问题。官方文档通常包括数据手册、参考手册、应用笔记等,是STM32开发的必备资料。官方文档与手册STM32的开发社区和论坛是开发者交流经验、解决问题的重要平台。开发者可以在这些平台上提问、分享经验、获取技术支持。常见的STM32开发社区包括ST官方论坛、GitHub、StackOverflow等。参与社区讨论,可以拓宽视野,提高解决问题的能力,加速STM32的学习进程。开发社区与论坛0102开发资源推荐第2章STM32的工程创建和调试绍兴理工学院2025年7月41本章要览1STM32CubeMX与STM32CubeIDE2STM32CubeIDE开发平台的搭建3新建工程流程424STM32CubeIDE的功能及其操作STM32CubeIDE平台的搭建了解STM32CubeIDE开发平台的基本功能,熟悉程序调试的方法和意义。使用该软件建立工程并进行程序下载和基本调试。通过学习,掌握STM32开发的基本概念。STM32CubeIDE平台的搭建能够独立下载和安装STM32CubeIDE软件本章的核心目标STM32CubeIDESTM32CubeMX01传统的单片机开发模式下,需要针对片上外设进行各种寄存器级初始化的工作,相当麻烦ST公司推出的STM32CubeMX是一款图形化代码生成工具,它通过图形化界面,可十分直观地配置各种片上时钟、中断、DMA、引脚等,直接生成初始化代码,使得开发人员可以将更多的精力放在核心代码的编写上生成的代码可选择性适配IAR、Keil及ST公司的免费开发工具STM32CubeIDE什么是STM32CubeMX
STM32CubeMX是图形化配置工具,通过图形化界面,帮助开发者快速配置各种外设和引脚,生成相应的初始化代码STM32CubeIDE是集成开发环境(IDE),其核心是编译器,主要功能是编译代码和调试代码,类似于Keil(MDK-ARM),它是ST公司收购第三方公司后开发的ARM免费开发工具。STM32CubeIDE集成了STM32CubeMX工具STM32CubeIDE=
STM32CubeMX
+TrueSTUDIO(MDK)STM32CubeIDE与STM32CubeMX的区别STM32CubeIDE平台搭建
02安装前的环境检查01下载安装包02从ST官方网站下载STM32CubeIDE安装包是安装的第一步。根据计算机的操作系统选择对应的软件版本。下载完成后,需要解压安装包。安装STM32CubeIDE之前,要确保计算机已经安装了Java环境,否则会导致安装失败或运行不稳定。检查计算机的操作系统版本,确保其符合STM32CubeIDE的安装要求。IDE平台的安装准备根据教材的步骤安装STM32CubeIDE要细心、耐心!STM32CubeIDE平台的安装STM32CubeIDE集成了STM32CubeMX在STM32CubeMX开发之前需要下载固件包可通过主菜单中的Help→ManageEmbeddedSoftwarePackages选项下载需要注意的是,不同的芯片系列,其对应的固件包是不同的Packs包下载与安装新建工程流程
03在STM32CubeIDE的欢迎界面上,列出了创建/导入工程的快捷入口可通过多种方法新建一个工程(Project,项目)(1)从零开始新建一个STM32工程。(2)已有STM32CubeMX的配置文件(*.ioc文件),希望根据该文件新建一个STM32工程。(3)已有SW4STM32或TrueSTUDIO工程,希望将它们转换成STM32CubeIDE工程。(4)基于STM32Cube库中的例程创建新工程。可通过File菜单下的New和Import选项实现相应的功能。分别对应4种情况第01步:正确选择MCU第02步:设置工程名称和路径第03步:设置工程基本信息第04步:配置引脚第05步:配置工程第06步:配置时钟源新建工程的12步第07步:配置时钟树第08步:配置GPIO口第09步:SYS设置第10步:工程管理设置第11步:生成代码第12步:编写代码STM31CubeIDE功能及其操作
04工具栏介绍STM32CubeIDE工程编译完成且无任何错误,就可进行调试和下载了。在工具栏中有三个与调试和下载相关的按钮:调试、运行和外部工具。通过“调试”按钮旁边的小三角按钮,可打开DebugConfigurations菜单,进行调试参数的配置,如调试器的选择、GDB连接的设置、ST-Link的设置、外部FlashLoader的设置等,并启动调试。通过“运行”按钮,可以仅下载程序不启动调试。通过“外部工具”按钮,可调用外部的命令行工具。工具栏介绍一定要学会程序调试!!!Debug调试模式STM32CubeIDE使用GDB进行调试,支持ST-Link和SEGGERJ-Link调试器,支持通过SWD或JTAG接口连接目标MCU。STM32CubeIDE工程编译完成之后,直接单击工具栏的爬虫按钮或者选择菜单Run→Debug选项,即可启动调试。如果是首次对当前工程进行调试,STM32CubeIDE将先编译工程,再打开调试配置窗口。调试配置窗口包含调试接口的选择、ST-Link的设置、复位设置和外部FlashLoader的设置等选项,用户可检查或者修改各项配置。确认所有的配置均正确无误,就可以单击OK按钮,启动调试。STM32CubeIDE先将程序下载至MCU,然后从链接文件(*.ld)中指定的程序入口开始执行。默认从Reset_Handler开始执行程序,并暂停在main函数的第一行,等待调试指令。01堆栈分析器的使用STM32CubeIDE内置的堆栈分析器能够为开发者提供项目状态和内存要求的详细信息。通过堆栈分析器,开发者可以实时监控程序的内存使用情况,发现潜在的内存泄漏问题。这一功能对于优化程序性能、提高系统稳定性具有重要意义。02高级调试功能STM32CubeIDE支持标准和高级调试功能,包括CPU内核寄存器、存储器和外设寄存器的视图、实时变量监视等。这些功能帮助开发者深入理解程序的运行状态,快速定位和解决复杂问题。高级调试功能是STM32开发中不可或缺的工具,能够显著提高开发效率。堆栈分析与调试STM32CubeIDE的个性化设置(窗口和文本)修改代码界面字体和大小修改界面背景颜色熟悉常用的快捷键自定义开发环境可根据个人习惯和项目需求,自定义STM32CubeIDE的开发环境。例如,调整代码界面的字体和颜色、设置快捷键、配置调试参数等。自定义开发环境能够提高开发的舒适度和效率,使得开发者能够更加专注于代码编写和调试。安装和使用插件STM32CubeIDE支持安装和使用各种插件,以扩展其功能。可根据项目需求,安装合适的插件,如代码分析插件、调试辅助插件等。这些插件能够提高开发效率。掌握插件的安装和使用方法是STM32开发的重要技能。插件与扩展功能感谢有你没有比人更高的山。只要你坚信自己能行,你就一定能找到进入STM32大门钥匙!Comeon►►►62第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)63第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)64STM32GPIO口概述STM32最常用的外设模块就是GPIO口。GPIO全称为GeneralPurposeInputOutput,即通用输入/输出,GPIO口具有8种输入和输出模式,本质就是其他单片机的输入/输出口,只不过它的灵活性更强、适用范围更广。STM32芯片的GPIO引脚与外部设备连接,可实现与外部通信、控制外部硬件或者采集外部硬件数据的功能。在输入模式下,GPIO口接收外部设备产生的电信号,并将其转换为数字信号传送给处理器。在输出模式下,GPIO口将处理器输出的数字信号转换为电信号向外部设备发送。重点——掌握四种输入模式的特点、各自应用的场合难点——相关函数的使用、四种模式的灵活应用通用输入输出口(GPIO)65STM32F103ZET6芯片的GPIO引脚STM32F103ZET6芯片为144引脚芯片,它基于Cortex-M3内核。STM32F103ZET6包含7个GPIO口组,分别为:GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF和GPIOG每组包含16个GPIO口,分别为
PA0~PA15、PB0~PB15、PC0~PC15、PD0~PD15、PE0~PE15、PF0~PF15、PG0~PG15。通用输入输出口(GPIO)66GPIO引脚的复用STM32有多个非GPIO内置外设,GPIO引脚也可作为这些外设的外部引脚使用。也就是说,一个引脚可以有多种功能。但是,STM32默认GPIO口为I/O口,如果想使用一个内置外设的功能引脚,就需要借助GPIO引脚的复用,换言之,某个GPIO引脚作为非GPIO内置外设的外部引脚使用,即为复用,比如,PB10、PB11可与串口USART3的TX、RX引脚进行复用,在实现USART3串口通信功能时,就是将上述两个GPIO引脚复用为串口输出和输入引脚。通用输入输出口(GPIO)67GPIO内部结构图通用输入输出口(GPIO)68第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)69GPIO的输入模式——四种(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入重点——掌握四种输入模式的特点、各自应用的场合难点——相关函数的使用、四种模式的灵活应用通用输入输出口(GPIO)70GPIO的输入模式——四种(1)GPIO_Mode_IN_FLOATING 浮空输入
(2)GPIO_Mode_AIN 模拟输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入信号进入芯片内部后,既没有接上拉电阻也没有接下拉电阻,经由触发器输入。
配置成这个模式后,用电压变量引脚电压为1点几伏,这是不确定值。例如:使用GPIO模拟IIC总线SDA(数据总线)——输出时设置成推挽
——输入时,如果没有外接上拉电阻时,则配置成上拉输入,如果有上拉电阻,则配置成浮空输入。又如:USARTx串口通信——TX,设置成复用推挽
——RX,设置成浮空输入举例特点应用由于其输入阻抗比较大,一般把这种模式用于标准的通讯协议,比如IIC、USART的等。通用输入输出口(GPIO)71GPIO的输入模式——四种(1)GPIO_Mode_IN_FLOATING 浮空输入
(2)GPIO_Mode_AIN 模拟输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入信号进入后不经过上拉电阻或下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。比如传送给ADC模块。模拟输入的信号是未经处理的信号例如:ADC外设对应的输入引脚——16路对应16个引脚,均应配置成模拟输入。又如:低功耗使用stop模式下——所有IO口最好配置成模拟输入,以降低功耗举例特点应用应用ADC模拟输入或者低功耗下省电通用输入输出口(GPIO)72GPIO的输入模式——四种(1)GPIO_Mode_IN_FLOATING 浮空输入
(2)GPIO_Mode_AIN 模拟输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入信号进入后经过内部上拉电阻或下拉电阻(30~50KΩ),经施密特触发器输入。默认情况下:上拉模式:读入的值为1下拉模式:读入的值为0例如:按键输入——使用上拉,按键按下,则切换为低电平选用上拉或下拉,取决于外部电路可以省去上拉或下拉电阻举例特点应用确保在没有输入信号时,有明确的电平要求的场合通用输入输出口(GPIO)73GPIO的输入模式——使用要领(1)GPIO输入的初始化设置
(2)引脚状态的读入不同的应用,需要设置不同的输入模式要领通用输入输出口(GPIO)74GPIO的输入模式——单功能按键利用一个按键控制发光一个二极管的发光。每按一次按键,发光二极管的状态就发生切换。——GPIO对应引脚的初始化——按键的捕捉与识别按键去抖动两法硬件去抖动软件去抖动——按键的处理要领通用输入输出口(GPIO)75GPIO的输入模式——一键多用在单片机应用系统中,为了节省硬件资源和产品成本,常采用一键多用的形式,即按键复用。一个按键有多个功能。——场景切换式根据场景的不同,自动切换其功能定义——时间切换式根据其按下的持续时间的长短,决定其不同的功能——按键组合式由两个按键或多个按键组合,实现少量按键的多功能化一个按键——短按:控制LED亮灭长安:使系统复位重启举例要领检测到S1被按下后,开始计时:——如果是3秒以内释放的,则切换D2的状态——如果3秒以上的,则执行系统重启系统重启可通过STM32单片机的软复位特性加以实现原理什么是软复位?通用输入输出口(GPIO)76GPIO的输入模式——一键多用在单片机应用系统中,为了节省硬件资源和产品成本,常采用一键多用的形式,即按键复用。一个按键有多个功能。系统软复位在系统的可靠性设计中十分有用。例如,当检测到外设模块死机,就可以通过软复位系统实现重启,使得外设重新被初始化而恢复正常工作。软复位在官方固件库的core_cm3.h文件里直接提供了系统复位的函数:static
__INLINE
void
NVIC_SystemReset(void)在发出复位请求前,要先把FAULTMASK
置位。static
__INLINE
void
__set_FAULTMASK(uint32_t
faultMask)
该函数的作用就是关闭中断,如果参数为1的话。软复位实现不得不说,软复位很有用!通用输入输出口(GPIO)77GPIO的输入模式——一键多用示例程序(只包括识别按键部分)按键识别u8KeyPressed(u16time){u16cnt=0;if(S1_DOWN)//按键按下否{delay_nms(10);//延时去抖动if(S1_DOWN){while(S1_DOWN)//等待按键释放
{delay_nms(10);cnt++;//计时}}}if(cnt==0)return0;elseif(cnt<time/10)return1;elsereturn2;}——参数time为判断时间设置,例如:3000为3秒——返回值0表示没有按键,1表示短按,2表示长按通用输入输出口(GPIO)78STM32的GPIO输出模式STM32的最常用的外设模块是GPIO,它通常用于信号的输入输出。STM32的GPIO具有四种输入、四种输出模式。(1)GPIO_Mode_AIN
模拟输入
(2)GPIO_Mode_IN_FLOATING
浮空输入
(3)GPIO_Mode_IPD
下拉输入
(4)GPIO_Mode_IPU
上拉输入
(5)GPIO_Mode_Out_OD
开漏输出
(6)GPIO_Mode_Out_PP
推挽输出
(7)GPIO_Mode_AF_OD
复用开漏输出
(8)GPIO_Mode_AF_PP
复用推挽输出4种输出模式这2种输出模式同在用在II2总线、串行通信等79STM32的GPIO输出模式STM32的GPIO用于一般的输入输出——第一步:对GPIO进行初始化设置第二步:对GPIO进行写入、读取操作对GPIO进行初始化设置:设置什么、如何设置对GPIO进行写入操作:写入1、0(高、低电平),如何写入80STM32的GPIO输出模式STM32的GPIO初始化设置——结合例子voidLED_GPIO_Config(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能C口时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//选择对应的引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;//速度为10MGPIO_Init(GPIOC,&GPIO_InitStructure);//初始化PC端口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12; //引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;//输出开漏方式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;//速度为10MGPIO_Init(GPIOC,&GPIO_InitStructure);//初始化C端口
}速度是啥意思?81STM32的GPIO输出模式STM32的GPIO的速度设置——GPIO的引脚速度——I/O口驱动电路的响应速度,而不是输出信号的速度。输出信号的速度只取决于程序。当STM32的GPIO端口设置为输出模式时,有三种速度可以选择——2MHz、10MHz和50MHz。这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
高频的驱动电路,噪声也高。当你不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。
如果你要输出较高频率的信号,但却选用了较低频率的驱动模块,你很可能会得到失真关键是,GPIO的引脚速度如何与应用匹配?
举例:对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。原来是这个意思啊,城里套路深!82STM32的GPIO输出模式STM32的GPIO写入(输出)操作——库函数法、寄存器法GPIO_WriteBit(GPIOx,GPIO_Pin_y,BIT_SET/BIT_RESET)置位或者复位单个输出端口的数据GPIO_Write(GPIOx,0x1111)置位或者复位整个输出端口的数据。其中x:A-Gy:0-15GPIO_SetBits(GPIOA,GPIO_Pin_0
|
GPIO_Pin_1)设置PA0--PA1高电平
GPIO_ResetBits(GPIOA,GPIO_Pin_0
|
GPIO_Pin_1)设置PA0--PA1低电平GPIOB->ODR=0XFFFF;
//设置PB0高电平
GPIOB->ODR=0XFFFE;
//设置PB0低电平例如:GPIO_WriteBit(GPIOA,GPIO_Pin_3,1)设置PA3高电平GPIO_WriteBit(GPIOA,GPIO_Pin_3,0)设置PA3低电平库函数法。注意用法寄存器法83STM32的GPIO输出模式STM32的GPIO写入(输出)操作——考考你!假设一个LED接在GPIOB的8脚上,高电平关闭。如果要让它以500ms/500ms的周期闪烁显示,请写出程序?84第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)85GPIO口配置(1)选择所用引脚
(2)配置引脚参数通用输入输出口(GPIO)86GPIO口配置(1)选择所用引脚
(2)配置引脚参数通用输入输出口(GPIO)87GPIO函数(1)初始化函数
(2)复位函数(3)读指定引脚的值(4)写指定引脚的值(5)GPIO引脚电平求反(6)GPIO引脚电平锁定通用输入输出口(GPIO)88第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)89GPIO输出控制—控制LED闪烁显示(1)MCU型号选择
(2)功能参数设置
配置RCC
配置时钟树
配置Debug
配置相应引脚PB5
生成工程通用输入输出口(GPIO)90图3.14LED电路设计图图3.15LED0引脚连接图(3)生成功能代码(4)编写应用程序(5)查验实验结果单功能按键输入—按键控制LED发光通用输入输出口(GPIO)91图3.26电路设计图KEY0控制发光二极管LED0发光。每按一次KEY0,LED0状态就转换一次。(1)MCU型号选择
(2)功能参数设置
配置RCC
配置时钟树
配置Debug
配置相应引脚PB5(输出)、PE4(输入)
生成工程(3)生成功能代码(4)编写应用程序(5)查验实验结果复用功能按键输入—一键多用通用输入输出口(GPIO)92图3.31电路设计图KEY1控制发光二极管LED0发光。短按KEY0,LED0状态就转换一次。长按KEY0(超过3s),系统复位。(1)MCU型号选择
(2)功能参数设置
配置RCC
配置时钟树
配置Debug
配置相应引脚PB5(输出)、PE3(输入)
生成工程(3)生成功能代码(4)编写应用程序(5)查验实验结果学会学习是大学最重要的使命方向你努力更重要谢谢你用心消化本章内容通用输入输出口(GPIO)93第4章中断系统原理与应用目录Contents中断及其基本原理01中断系统组成EXIT应用实例04中断处理流程EXIT控制LED翻转嵌套向量中断控制器02EXIT嵌套LED控制EXTI配置与应用03嵌套向量中断控制器的功能异常和中断EXITEXIT配置EXIT函数中断及其原理PowerpointDesignPART01中断的应用场景中断广泛应用于嵌入式系统中,如实时数据处理、设备控制和故障检测等场景。在这些场景中,中断机制使得处理器能够快速响应外部设备的状态变化或内部定时器的溢出事件。通过合理配置中断,系统可以高效地管理多个任务,确保关键任务得到及时处理,从而提升系统的整体性能和用户体验。中断的概念解析中断是处理器在运行过程中应对紧急事件的机制,允许CPU暂停当前任务,转而处理更高优先级的事件。这种机制显著提升了系统的实时性和效率,使得处理器能够灵活应对多种突发情况。通过中断,系统可以在不中断主程序执行的情况下,及时响应外部或内部的紧急请求,从而提高整体操作的可靠性和效率。中断的定义与作用中断系统组成PowerpointDesignPART02PART02PART01嵌套向量中断控制器(NVIC)NVIC是STM32单片机中管理中断的核心组件,它负责处理来自外部和内部的中断请求。NVIC支持多级中断优先级配置,允许用户根据需求调整中断的响应顺序。通过NVIC,处理器可以高效地管理多个中断源,确保高优先级中断能够及时得到处理,从而提升系统的实时性和可靠性。中断请求与中断使能中断请求是中断事件的触发信号,由外部设备或内部定时器产生。中断使能则用于控制中断的启用或禁用状态。通过设置中断使能位,用户可以灵活地控制中断的响应,确保系统在需要时能够及时处理中断请求,而在不需要时能够屏蔽不必要的中断,从而提高系统的运行效率。中断系统的组成中断标志中断标志(InterruptFlag)用于指示特定的中断是否发生,发生时该标志位被置位。在处理器处理完中断后,需要及时清除相应的中断标志,避免同一个中断被再次触发。中断源能引起中断的事件称为中断源。中断源一般都与外设相关。每一个中断源都有与它相对应的中断标志位,一旦该中断发生,则其中断标志位被置位,如果中断标志位被清除,则其对应的中断便不会被处理器响应。PART02PART01中断向量表中断向量表(InterruptVectorTable)是STM32单片机中的一个特殊的内存区域,存储着不同中断所对应的中断处理程序的地址。当中断发生时,处理器会通过中断向量表找到相应中断源的中断服务程序的入口地址,并跳转至该地址去执行。中断优先级STM32单片机的中断优先级控制机制允许用户为不同的中断源分配不同的优先级,它分为响应优先级和抢占优先级两类。当多个中断请求同时发生时,处理器先处理优先级较高的中断。在NVIC中,每个中断通道可通过配置寄存器来设置中断源的优先级。中断系统的组成中断服务程序在STM32单片机中,每个中断源通常对应一个中断服务程序(InterruptServiceRoutine,ISR),也称为中断服务函数。用户可自定义中断服务程序,以对相应中断请求做出对应的处理。中断挂起中断挂起(InterruptPending)是NVIC的一项功能,用于标识正在等待处理的中断请求,即当中断请求发生时,如果该中断已被挂起,它将等待处理器的处理。该功能使得处理器可按照优先级顺序处理挂起的中断。中断处理流程PowerpointDesignPART03中断响应是中断处理的第一阶段,当中断请求发生时,处理器会首先识别中断源,并根据中断使能位的设置判断是否响应该中断。如果中断被使能,处理器将保存当前执行状态,并跳转到中断服务程序。这一阶段由硬件自动完成,确保中断能够被及时响应,从而保证系统的实时性。中断响应阶段中断执行阶段是中断处理的核心部分,处理器在这一阶段执行中断服务程序。用户可以根据需求自定义中断服务程序,以处理特定的中断请求。中断服务程序需要高效地完成中断任务,并及时清除中断标志,以避免中断被重复触发。这一阶段的执行效率直接影响系统的整体性能。中断执行阶段中断处理流程——三个阶段当处理器执行中断服务程序后,首先恢复中断现场(包括现场信息的出栈),然后执行中断返回,以便回到断点处继续执行主程序。中断返回阶段中断处理流程——三个阶段NVIC功能详解PowerpointDesignPART04NVIC提供了中断使能和禁止功能,允许用户动态控制中断的响应状态。通过设置中断使能位,用户可以启用或禁用特定的中断。这一功能在需要临时屏蔽某些中断时非常有效,确保系统能够专注于处理当前最重要的任务,从而提高系统的运行效率和稳定性。NVIC支持多级中断优先级配置,允许用户为不同的中断源分配不同的优先级。通过配置抢占优先级和响应优先级,用户可以确保高优先级中断能够及时得到处理。NVIC的优先级管理机制使得处理器能够高效地处理多个并发中断,从而提升系统的实时性和可靠性。0102中断优先级管理中断使能与禁止NVIC的主要功能NVIC支持中断的嵌套。当CPU正在处理一个中断时,如果具有更高优先级的事件提出中断请求,则CPU停止当前中断的处理,转而处理更高优先级的中断。嵌套中断机制可使得NVIC更有效地管理多个并发的中断事件。STM32F1系列支持16层嵌套。中断嵌套示意图如图4.3所示。03中断嵌套NVIC的主要功能EXTI配置与应用PowerpointDesignPART05EXTI的中断服务程序是处理外部中断请求的核心部分。用户需要在中断服务程序中清除中断标志,并调用回调函数以执行具体的中断任务。通过合理设计中断服务程序,用户可以确保外部中断能够被及时处理,从而提高系统的实时性和可靠性。此外,回调函数的灵活性使得用户能够轻松扩展中断处理功能。EXTI的配置是实现外部中断功能的关键步骤。用户需要首先选择需要配置的GPIO引脚,并将其设置为外部中断输入模式。接着,配置中断触发方式(上升沿、下降沿或双边沿触发),并设置中断优先级。最后,启用外部中断,并确保中断服务程序正确实现,以处理外部中断请求。EXTI的配置步骤EXTI的中断服务程序EXTI的基本配置HAL_GPIO_EXTI_IRQHandler(uint16_tGPIO_Pin)功能描述:该函数被EXTIX_IRQHandler(void)函数调用,该函数的作用是对中断标志位清零和调用回调函数。应用范例:HAL_GPIO_EXTI_IRQHandler(KEY0_Pin);voidEXTIX_IRQHandler(void)功能描述:外部中断触发后进入该函数。应用范例:自动触发并直接调用。外部中断函数外部中断请求处理函数EXTI函数与EXTI相关的处理函数被定义在stm32f1xx_hal_it.c源文件中__weakvoidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin)功能描述:该函数被HAL_GPIO_EXTI_IRQHandler(void)函数调用,是一个弱函数。其主要功能是完成外部中断的任务,由用户自己定义。应用范例:HAL_GPIO_EXTI_IRQHandler(KEY0_Pin);回调函数EXTI函数与EXTI相关的处理函数被定义在stm32f1xx_hal_it.c源文件中中断应用实例PowerpointDesignPART06在本实验中,用户将使用两个按键作为外部中断输入源,通过外部中断控制两个LED的亮灭状态。实验电路设计需要确保按键与GPIO引脚正确连接,并配置GPIO引脚为外部中断输入模式。此外,还需要配置LED的控制引脚,以确保LED能够根据中断请求改变状态。KEY0控制LED0,KEY1控制LED1。实验电路设计中断控制LED翻转01.MCU型号选择02.功能参数设置
配置RCC,选择外部高速晶振
配置时钟树,选择系统时钟为72M
配置DebugGPIO引脚配置NVIC配置
生成工程03.生成工程代码04.编写应用程序05.查验实验结果程序实现与调试中断控制LED翻转根据开发板设计电路,使用一个按键引脚的外部中断完成延时500ms后LED0闪烁一次,KEY0控制LED0。嵌套LED控制电路设计图如图4.23所示。实验电路设计EXIT嵌套LED控制01.MCU型号选择02.功能参数设置
配置RCC,选择外部高速晶振
配置时钟树,选择系统时钟为72M
配置DebugGPIO引脚配置NVIC配置
生成工程03.生成工程代码04.编写应用程序05.查验实验结果程序实现与调试EXIT嵌套LED控制关于中断其他说明PART07优先级配置策略合理配置中断优先级是优化中断系统性能的关键。用户需要根据任务的重要性和紧急程度,为不同的中断源分配适当的优先级。通过调整抢占优先级和响应优先级,用户可以确保高优先级任务能够及时得到处理,从而提升系统的整体效率和实时性。中断嵌套管理中断嵌套管理是处理多个并发中断的重要手段。通过配置NVIC的中断嵌套功能,用户可以允许高优先级中断中断当前正在处理的低优先级中断。这一机制使得处理器能够高效地处理多个中断请求,从而提升系统的实时性和可靠性。用户需要合理配置中断优先级,以避免中断嵌套导致的系统不稳定问题。中断优先级优化中断标志检测是调试中断系统的重要方法。用户可以通过检测中断标志位,确认中断是否被正确触发和处理。在调试过程中,用户需要确保中断标志位在中断处理完成后被及时清除,以避免中断被重复触发。此外,用户还可以通过监控中断标志位的变化,分析中断处理过程中的问题。中断标志检测中断服务程序的调试是确保中断功能正确实现的关键。用户可以通过单步调试、断点设置等方法,检查中断服务程序的执行流程和处理结果。在调试过程中,用户需要确保中断服务程序能够正确清除中断标志,并执行预期的中断任务。此外,用户还需要检查回调函数的实现,以确保中断处理功能的灵活性和扩展性。中断服务程序调试中断调试方法在学习中断系统的过程中,学生需要学会识别任务的轻重缓急,并合理规划任务的执行顺序。这一能力不仅适用于嵌入式系统开发,也适用于日常生活和学习。通过中断系统的学习,学生将能够更好地管理时间,提高工作效率,从而在大学生活中取得更好的成绩。01任务轻重缓急识别学生应能够将中断系统的优先级管理理念应用到实际生活中。通过合理规划任务的优先级,学生可以更高效地完成学习和生活任务。这一能力的培养将帮助学生在未来的职场中更好地应对挑战,提高工作效率,实现个人职业发展目标。02优先级规划实践任务优先级管理HAL库中断开发HAL库为STM32单片机的中断开发提供了便捷的接口。需要学会使用HAL库中的中断相关函数,如HAL_GPIO_EXTI_IRQHandler和HAL_GPIO_EXTI_Callback,以简化中断程序的开发过程。通过实践,将能够熟练掌握HAL库在中断开发中的应用,提高开发效率和代码的可维护性。中断解决实际问题应能够运用中断机制解决实际问题。例如,通过中断控制LED的亮灭状态、实现按键输入的实时响应等。在实践过程中,需要结合HAL库和中断配置,编写高效的中断处理程序,以满足实际应用的需求。这一能力的培养为后续的嵌入式系统开发打下坚实的基础。中断与HAL库结合谢谢大家PowerpointDesignAiPPT主讲人:时间:2025.7第5章
串口(USART)及其应用1串行通信串行通信,同步/异步串行通信,USART/UARTSTM32的USART原理及其应用要领STM32有多达5个USART,数量多、功能强串行通信的配置STM32串口设置配置,常用的UART函数,串口助手串口通信应用实例收发轮询方式,收发中断方式,空闲中断方式234USART及其应用122串口通信嵌入式系统中的通信同步/异步串行通信USART/UART嵌入式系统中的通信嵌入式设备之间或嵌入式设备与外部设备之间常常要进行信息交换和数据传输,这个过程就是通信。1.内部通信嵌入式系统通常由多个硬件模块或组件组成,这些硬件模块或组件之间需要进行内部通信以实现协同工作。例如,一个嵌入式系统可能包括微控制器、传感器、执行器等多个模块,它们之间通过总线、中断或其他通信方式进行信息传递,以实现系统的整体功能。2.外部通信嵌入式系统通常需要与外部设备进行通信,以获取外部信息、控制外部设备或与其他系统进行交互。外部通信包括串口通信、网络通信、无线通信等。3.传感器与控制器通信嵌入式系统中经常涉及传感器与控制器之间的通信。通信可以是模拟信号的传输,也可以是数字信号的传输。4.网络通信对于连接到网络的嵌入式系统,网络通信变得至关重要,它包括以太网、Wi-Fi、蓝牙等通信方式。5.总线通信内部组件之间的通信一般通过总线进行,它可传输地址、数据和控制信号,从而协调各个组件的工作。USART及其应用123串口通信嵌入式系统中的通信同步/异步串行通信USART/UART同步/异步串行通信异步通信和同步通信是两种不同的通信方式,它们在数据传输的时序和同步性上有明显的区别。1.异步通信(1)与时序无关:在异步通信中,数据的传输不依赖严格的时序同步。(2)起始位和停止位:异步通信使用起始位和停止位来标识每个数据帧。(3)波特率:异步通信中,波特率是一个关键的参数,它指定了每秒传输的比特数。由于没有共享的时钟信号,发送端和接收端需要事先约定相同的波特率。(4)用途:异步通信常用于距离相对较短和速率较低的通信,例如串口通信。2.同步通信(1)时序同步:同步通信要求发送端和接收端在时序上保持同步。(2)时钟同步:发送端和接收端共享相同的时钟信号,以确保数据的传输时序一致。(3)速率同步:在同步通信中,不同设备之间的时钟速率要匹配一致,以保证数据的准确传输。(4)应用:同步通信通常用于高速数据传输和长距离通信,例如以太网通信、并行总线通信等。UART是异步通信的代表,而以太网、SPI、I2C等通信协议则是同步通信的代表。USART及其应用124串口通信嵌入式系统中的通信同步/异步串行通信USART/UARTUSART/UARTUSART和UART的主要区别在于,USART支持同步和异步通信,而UART仅支持异步通信。UART(UniversalAsynchronousReceiverTransmitter)即通用异步收发器,是一种用于串行通信的协议,它分为物理层和协议层。UART通常用于与外部设备进行串行通信,数据通过引脚逐位进行传输,以实现数据的发送与接收。在UART通信中,发送端产生的不同长度的时间间隔决定了数据的传输速率,即波特率。1.物理层1)引脚定义2)电压特性3)物理接口4)USB转串口模块2.串行通信协议的协议层1)帧结构2)波特率3)奇偶校验4)流控制。3.协议应用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 呼吸机患者口腔护理与分泌物管理
- 压疮护理中的持续质量改进
- 智能广告投放策略设计课程设计
- 创新技术研发承诺责任书8篇范文
- 2026年心理年龄怎样测试题及答案
- 2026年看图找错测试题及答案
- 2026年分数初步认识测试题及答案
- 2026年辅导作业测试题及答案
- 2026年日本犯罪心理测试题及答案
- 2026年咨询机构测试题及答案
- 广东东莞市2025-2026学年度高三下学期语文考前冲刺卷命题大赛卷及参考答案
- 电子科技公司绩效与薪酬管理办法
- 2026年医疗器械生产质量管理规范
- 2026福建南平市邵武市机关事业单位编外人员招聘62人考试参考题库及答案解析
- 2026ECMO考试题库及答案
- 2026湖北武汉市特种设备检验检测研究院招聘工作人员15人备考题库及答案详解(夺冠)
- 江苏省小学科学实验知识竞赛题库附答案
- 2024年甘肃高考数学试题及答案
- Cpk 计算标准模板
- FANUC O加工中心编程说明书
- 滕王阁序注音全文打印版
评论
0/150
提交评论