嵌入式系统原理与应用 课件 第7章GPIO202506_第1页
嵌入式系统原理与应用 课件 第7章GPIO202506_第2页
嵌入式系统原理与应用 课件 第7章GPIO202506_第3页
嵌入式系统原理与应用 课件 第7章GPIO202506_第4页
嵌入式系统原理与应用 课件 第7章GPIO202506_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统原理与应用西安邮电大学计算机学院王忠民本章学习目的理解GPIO的基本工作原理,理解GPIO库函数开发原理,掌握基于寄存器结构体操作和基于库函数调用的开发过程。了解STM32F103R6芯片GPIO的引脚、内部结构和工作模式,以及内部寄存器的功能和用法。要求学生熟练掌握裸机版嵌入式应用系统开发的整体流程,以及相关工具软件的使用方法和程序仿真、调试方法,能独立完成包含简单人机交互功能的嵌入式应用系统的设计与开发。。第7章STM32F103

GPIO原理及应用---学习目的裸机开发:使用汇编或C,直接对外设寄存器操作基于SPL开发:调用ST的库函数对外设进行操作基于HAL开发:使用ST的STM32Cube图形化配置界面,调用HAL库,自动生成程序初始代码基于LL开发:使用ST的STM32Cube图形化配置界面,调用LL库,自动生成程序初始代码2025/11/28第7章GPIO---开发模式7.1GPIO概述

7.2STM32F103的GPIO7.2.1引脚描述 7.2.2内部结构 7.2.3工作模式7.2.4内部寄存器 7.3STM32F103GPIO库函数开发原理7.4基于寄存器的GPIO输入输出仿真与实现

7.4.1功能描述与硬件设计7.4.2软件设计与仿真实现7.5基于标准外设库的GPIO输入输出仿真与实现7.5.1GPIO标准外设库接口函数

7.5.2GPIO输入输出仿真与实现

第7章STM32F103

GPIO原理及应用---学习内容第7章STM32F103

GPIO原理及应用---GPIO概述GPIO(GeneralPurposeInputOutput,通用输入输出接口)是MCU与外部设备连接、实现人机交互的基本接口。GPIO引脚可以用于驱动LED、LCD、键盘、开关、传感器及其他片外器件。微控制器往往提供了多个GPIO端口,数十个GPIO引脚。有的引脚已经用于连接特定的外设,其余引脚用户可以自由使用,通过GPIO端口内部寄存器动态地配置为输入或输出,可以同时对任意个输出引脚进行置位或清零,也可以读出输出寄存器的值以及引脚的当前状态。借助GPIO,MCU可以实现对外围设备(如LED和按键等)最简单、最直观的监控。除此之外,当MCU没有足够的I/O引脚或片内存储器时,GPIO还可用于串行和并行通信、存储器扩展等。用户正是通过对GPIO内部寄存器的各种操作来控制输入输出设备工作,从而实现人机交互和各种控制功能。STM32F103微控制器最多可以提供112个多功能双向I/O引脚。这些I/O引脚依次分布在不同的端口中。端口号:端口号通常以大写字母命名,从A开始,依次类推。例如,GPIOA、GPIOB、GPIOC、…等。引脚号:每个端口有16个I/O引脚,分别命名为0-15。例如,STM32F103RCT6微控制器的GPIOA端口有16个引脚,分别为PA0、PA1、PA2、PA3、…、PA14和PA15。第7章STM32F103

GPIO原理及应用---GPIO概述STM32F103-GPIO的主要特性:提供最多112个多功能双向I/O引脚,80%的引脚利用率;几乎每个I/O引脚(ADC外)都兼容5V,每个I/O引脚具有20mA驱动能力;每个I/O引脚最高18MHz的翻转速度,50MHz的输出速度;每个I/O引脚有8种工作模式,在复位时和刚复位后,复用功能未开启,I/O引脚被配置成浮空输入模式;所有I/O引脚都具备复用功能,包括TIMER、JTAG/SWD、USART、I2C、SPI等;某些复用功能引脚可通过复用功能重映射用作另一复用功能,方便PCB设计;所有I/O引脚都可作为外部中断输入,同时可以有16个中断输入;几乎每个I/O引脚(除端口F和G外)都可用作事件输出;PA0可作为从待机模式唤醒的引脚,PC13可作为侵入检测的引脚。第7章STM32F103

GPIO原理及应用---GPIO概述7.1GPIO概述

7.2STM32F103的GPIO7.2.1引脚描述 7.2.2内部结构 7.2.3工作模式7.2.4内部寄存器 7.3STM32F103GPIO库函数开发原理7.4基于寄存器的GPIO输入输出仿真与实现

7.4.1功能描述与硬件设计7.4.2软件设计与仿真实现7.5基于标准外设库的GPIO输入输出仿真与实现7.5.1GPIO标准外设库接口函数

7.5.2GPIO输入输出仿真与实现

第7章STM32F103

GPIO原理及应用---学习内容在STM32F103系列微控制器中,不同型号的微处理器其GPIO端口数和引脚数目也不尽相同,通过芯片数据手册可以查看不同封装类型芯片的引脚分布和功能。STM32F103R6具有GPIOA(PA[15:0])、GPIOB(PB[15:0])、GPIOC(PC[15:0])、GPIOD(PD[2:0])四个GPIO端口,共51个输入/输出引脚。这些GPIO引脚都可以通过软件动态配置为输出(推挽输出或开漏输出)、输入(带或不带上拉或下拉电阻)或复用的外设功能端口。多数GPIO引脚都与数字或模拟的复用外设共用。除了具有模拟输入功能的端口外,其他所有GPIO引脚都有大电流通过能力。GPIO寄存器可以同时对任意若干个输出引脚进行置位或清零操作。用户可以读出输出寄存器的值及引脚的当前状态。第7章STM32F103

GPIO原理及应用---STM32F103的GPIOSTM32F103R6LQFP64引脚图第7章STM32F103

GPIO原理及应用---GPIO的内部结构输入模式浮空输入(GPIO_Mode_IN_FLOATING)---InputFloating上拉输入(GPIO_Mode_IPU)---InputPull-Up下拉输入(GPIO_Mode_IPD)---InputPull-Down模拟输入(GPIO_Mode_AIN)---AnalogInput输出模式推挽输出(GPIO_Mode_Out_PP)---OutputPush-Pull开漏输出(GPIO_Mode_Out_OD)---OutputOpen-Drain推挽复用输出(GPIO_Mode_AF_PP)---AlternateFunctionPush-Pull开漏复用输出(GPIO_Mode_AF_OD)---AlternateFunctionOpen-Drain第7章STM32F103

GPIO原理及应用---GPIO的工作模式第7章STM32F103

GPIO原理及应用---GPIO的工作模式:输入浮空模式在此状态下,I/O口的电平信号进入输入数据寄存器,此时的I/O电平信号是不确定的,完全由外部输入决定,如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的,且电压具有不确定性。第7章STM32F103

GPIO原理及应用---GPIO的工作模式:输入上拉模式上拉就是将一个不确定的信号拉到一个固定的值,如上图所示,通过I/O口来的信号就被上拉电阻拉到了VDD。所以,和浮空输入相比来说,当I/O口被上拉的状态下,输入端的电平可以保持在高电平。第7章STM32F103

GPIO原理及应用---GPIO的工作模式:输入下拉模式下拉与上拉类似,通过I/O口来的信号被下拉电阻拉到了VSS,当I/O口被悬空的状态下,输入端的电平可以保持在低电平。第7章STM32F103

GPIO原理及应用---GPIO的工作模式:模拟输入模式模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等等。第7章STM32F103

GPIO原理及应用---GPIO的工作模式:开漏输出模式输出寄存器上的‘0’激活N-MOS,而输出寄存器上的‘1’将端口置于高阻态(P-MOS从不被激活)。N-MOS管,当设置输出的值为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。所以开漏输出只能输出强低电平,高电平得靠外部电阻拉高。第7章STM32F103

GPIO原理及应用---GPIO的工作模式:开漏复用输出模式开漏复用与开漏类似,只是电平信号的来源不是来自CPU的输出数据寄存器,而是来自片上外设模块。第7章STM32F103

GPIO原理及应用---GPIO的工作模式:推挽输出模式输出寄存器上的‘0’激活N-MOS,而输出寄存器上的‘1’将激活P-MOS。P-MOS管和N-MOS管,当设置输出的值为高电平的时候,P-MOS管处于开启状态,N-MOS管处于关闭状态,此时I/O端口的电平就由P-MOS管决定:高电平;当设置输出的值为低电平的时候,P-MOS管处于关闭状态,N-MOS管处于开启状态,此时I/O端口的电平就由N-MOS管决定:低电平。所以推挽输出可以输出强高低电平,连接数字器件。第7章STM32F103

GPIO原理及应用---GPIO的工作模式:推挽复用输出模式推挽复用与推挽类似,只是电平信号的来源不是来自CPU的输出数据寄存器,而是来自片上外设模块。GPIO引脚的输出速度STM32微控制器I/O引脚内部有多个响应速度(2MHz,10MHz,50MHz)不同的驱动电路,用户可根据自己的需要选择合适的驱动电路。对于连接LED、数码管和蜂鸣器等外部设备,一般设置为2MHz。对于串口来说,这样只需要用2MHz的GPIO的引脚速度就可以了。对于I2C接口,可以选用10MHz的GPIO引脚速度。对于SPI接口,需要选择呢50MHz的GPIO引脚速度对于用作FSMC复用功能连接存储器的输出引脚,一般设置为50MHz的I/O引脚速度。用户使用通用GPIO接口来实现人机交互的过程就是通过编程来操作相应GPIO端口内部寄存器的过程。编程时,可以通过端口地址来访问对应的GPIO端口中相应的寄存器。STM32F103R6的4组GPIO端口地址范围如表7.2所示。第7章STM32F103

GPIO原理及应用---GPIO内部寄存器APB1配置寄存器GPIOx_CRL和GPIOx_CRH:32位,设置GPIO引脚的工作模式和输出速率。

GPIOx_CRL——[7:0],GPIOx_CRH——[15:8]输入数据寄存器GPIOx_IDR:32位输出数据寄存器GPIOx_ODR:32位置位/复位寄存器GPIOx_BSRR(BitSetResetRegister):32位复位寄存器GPIOx_BRR(BitResetRegister):

16位锁定寄存器GPIOx_LCKR(LockRegiste):

32位第7章STM32F103

GPIO原理及应用---GPIO内部寄存器(7个)第7章STM32F103

GPIO原理及应用---通过结构体成员访问寄存器的实现途径(STM32F10x.h)31302928272625242322212019181716CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6[1:0]CNF5[1:0]MODE5[1:0]CNF4[1:0]MODE4[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW

1514131211109876543210CNF3[1:0]MODE3[1:0]CNF2[1:0]MODE2[1:0]CNF1[1:0]MODE1[1:0]CNF0[1:0]MODE0[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:3027:2623:2219:1815:1411:107:63:2CNFy[1:0]:端口x配置位(y=0…7)(Portxconfigurationbits)软件通过这些位配置相应的I/O端口。在输入模式(MODE[1:0]=00):

在输出模式(MODE[1:0]>00):

00:模拟输入模式

00:通用推挽输出模式01:浮空输入模式(复位后的状态)01:通用开漏输出模式

10:上拉/下拉输入模式

10:复用功能推挽输出模式

11:保留

11:复用功能开漏输出模式位29:2825:2421:2017:1613:129:85:41:0MODEy[1:0]:端口x的模式位(y=0…7)(Portxmodebits)软件通过这些位配置相应的I/O端口。

00:输入模式(复位后的状态)01:输出模式,最大速度10MHz10:输出模式,最大速度2MHz11:输出模式,最大速度50MHz端口配置低寄存器GPIOx_CRL(低8位引脚配置)31302928272625242322212019181716CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6[1:0]CNF5[1:0]MODE5[1:0]CNF4[1:0]MODE4[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW

1514131211109876543210CNF3[1:0]MODE3[1:0]CNF2[1:0]MODE2[1:0]CNF1[1:0]MODE1[1:0]CNF0[1:0]MODE0[1:0]RWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRW位31:3027:2623:2219:1815:1411:107:63:2CNFy[1:0]:端口x配置位(y=8…15)(Portxconfigurationbits)软件通过这些位配置相应的I/O端口。在输入模式(MODE[1:0]=00):

在输出模式(MODE[1:0]>00):

00:模拟输入模式

00:通用推挽输出模式01:浮空输入模式(复位后的状态)01:通用开漏输出模式

10:上拉/下拉输入模式

10:复用功能推挽输出模式

11:保留

11:复用功能开漏输出模式位29:2825:2421:2017:1613:129:85:41:0MODEy[1:0]:端口x的模式位(y=8…15)(Portxmodebits)软件通过这些位配置相应的I/O端口。

00:输入模式(复位后的状态)01:输出模式,最大速度10MHz10:输出模式,最大速度2MHz11:输出模式,最大速度50MHz端口配置高寄存器GPIOx_CRH(高8位引脚配置)位31:16保留,始终读为0。位15:0IDRy[15:0]:端口输入数据(y=0…15)(Portinputdata)这些位为只读并只能以字(16位)的形式读出。读出的值为对应I/O口的状态。端口输入数据寄存器GPIOx_IDR位31:16保留,始终读为0。位15:0ODRy[15:0]:端口输出数据(y=0…15)(Portoutputdata)这些位可读可写并只能以字(16位)的形式操作。

注:对GPIOx_BSRR(x=A…E),可以分别地对各个ODR位进行独立的设置/清除。端口输出数据寄存器GPIOx_ODR位31:16BRy:清除端口x的位y(y=0…15)(PortxResetbity)这些位只能写入并只能以字(16位)的形式操作。

0:对对应的ODRy位不产生影响

1:清除对应的ODRy位为0注:如果同时设置了BSy和BRy的对应位,BSy位起作用。位15:0BSy:设置端口x的位y(y=0…15)(PortxSetbity)这些位只能写入并只能以字(16位)的形式操作。

0:对对应的ODRy位不产生影响

1:设置对应的ODRy位为1端口位设置/清除寄存器GPIOx_BSRR位31:16保留。位15:0BRy:清除端口x的位y(y=0…15)(PortxResetbity)这些位只能写入并只能以字(16位)的形式操作。0:对对应的ODRy位不产生影响

1:清除对应的ODRy位为0端口位清除寄存器GPIOx_BRR位31:17保留。位16LCKK:锁键(Lockkey)该位可随时读出,它只可通过锁键写入序列修改。0:端口配置锁键位激活1:端口配置锁键位被激活,位15:0LCKy:端口x的锁位y(y=0…15)(PortxLockbity)这些位可读可写但只能在LCKK位为0时写入。0:不锁定端口的配置1:锁定端口的配置端口配置锁定寄存器GPIOx_LCKR位31:16保留,始终读为0。位15ADC3EN:ADC3接口时钟使能

(ADC3interfaceclockenable)位14USART1EN:USART1时钟使能(USART1clockenable)位13TIM8EN:TIM8定时器时钟使能(TIM8Timerclockenable)位12SPI1EN:SPI1时钟使能(SPI1clockenable)位11TIM1EN:TIM1定时器时钟使能(TIM1Timerclockenable)位10ADC2EN:ADC2接口时钟使能

(ADC2interfaceclockenable)位9ADC1EN:ADC1接口时钟使能

(ADC1interfaceclockenable)位8IOPGEN:IO端口G时钟使能(I/OportGclockenable)位7IOPFEN:IO端口F时钟使能(I/OportFclockenable)位6IOPEEN:IO端口E时钟使能(I/OportEclockenable)位5IOPDEN:IO端口D时钟使能(I/OportDclockenable)位4IOPCEN:IO端口C时钟使能(I/OportCclockenable)位3IOPBEN:IO端口B时钟使能(I/OportBclockenable)位2IOPAEN:IO端口A时钟使能(I/OportAclockenable)位1保留,始终读为0。位0AFIOEN:辅助功能IO时钟使能(AlternatefunctionI/Oclockenable)APB2外设时钟使能寄存器RCC_APB2ENR7.1GPIO概述

7.2STM32F103的GPIO7.2.1引脚描述 7.2.2内部结构 7.2.3工作模式7.2.4内部寄存器 7.3STM32F103GPIO库函数开发原理7.4基于寄存器的GPIO输入输出仿真与实现

7.4.1功能描述与硬件设计7.4.2软件设计与仿真实现7.5基于标准外设库的GPIO输入输出仿真与实现7.5.1GPIO标准外设库接口函数

7.5.2GPIO输入输出仿真与实现

第7章STM32F103

GPIO原理及应用---学习内容通过对GPIO端口编程来实现人机交互时,一般有直接操作寄存器、通过结构体进行操作、通过调用封装好的库函数进行操作等开发方式,这些开发方式本质上都是对GPIO端口内部寄存器进行读、写操作(访问寄存器对应的端口地址),从而实现人机交互或相关控制功能。为了帮助读者了解这几种开发方式的原理,本节以GPIO基本输出——点亮LED灯为例,分别介绍每种开发方式的实现方法。假设GPIO端口的引脚PA0连接了LED灯,其电路连接为低电平点亮LED灯,高电平熄灭LED灯。第7章STM32F103

GPIO原理及应用---GPIO库函数开发原理假设GPIO端口的引脚PA0连接了LED灯,其电路连接为低电平点亮LED灯,高电平熄灭LED灯。其底层操作过程如下:使能外设时钟初始化GPIO引脚操作控制GPIOA_CRL的地址:0x40010800+0x00=0x40010800GPIOA_ODR的地址:0x40010800+0x0C=0x4001080CRCC_APB2ENR的地址:0x40021000+0x18=0x40021018第7章STM32F103

GPIO原理及应用---GPIO库函数开发原理假设GPIO端口的引脚PA0连接了LED灯,其电路连接为低电平点亮LED灯,高电平熄灭LED灯。其底层操作过程如下:使能外设时钟初始化GPIO引脚操作控制第7章STM32F103

GPIO原理及应用---GPIO库函数开发原理(1)直接操作端口寄存器假设GPIO端口的引脚PA0连接了LED灯,其电路连接为低电平点亮LED灯,高电平熄灭LED灯。其底层操作过程如下:使能外设时钟初始化GPIO引脚操作控制第7章STM32F103

GPIO原理及应用---GPIO库函数开发原理(2)将端口寄存器封装成结构体

定义一种GPIO端口的结构体,结构体的地址为端口的基地址,结构体的成员为端口寄存器,成员的顺序按照寄存器的偏移地址从低到高排列,成员类型跟寄存器类型相同。操作寄存器时,操作该结构体的成员即可。假设GPIO端口的引脚PA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论