stm32的GPIO学习笔记_第1页
stm32的GPIO学习笔记_第2页
免费预览已结束,剩余7页可下载查看

下载本文档

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

文档简介

1、学习必备欢迎下载I/O 口工作模式:1高阻输入输入模式的结构比较简单,就是一个带有施密特触发输入(Schmitt-triggered in put )的三态缓冲器(U1),并具有很高的阻抗。施密特触发输入的作用是能将缓慢变化的或者是畸变 的输入脉冲信号整形成比较理想的矩形脉冲信号。执行 GPIO 管脚读操作时,在读脉冲(Read Pulse)的作用下会把管脚(Pin)的当前电平 状态读到内部总线上(In ternal Bus )。2推挽输出推挽电路是两个参数相同的三极管或MOSFET 以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导

2、通损耗小、效率高在推挽输出模式下,GPIO 还具有回读功能,实现回读功能的是一个简单的三态门U2。注意:执行回读功能时,读到的是管脚的输出锁存状态,而不是外部管脚Pin 的状态。3.开漏输出开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻 时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻, 很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平,比如加上上拉电阻就可以提供TTL/CMOS 电平输出等。开漏输出和推挽输出相比结构基本相同,但只有下拉晶体管T1 而没有上拉晶体管。同样,T1 实际上也是多组可编程选择的晶体管。开漏输出的实际作用就

3、是一个开关,输出“1 ”时断开、输出“ 0”时连接到 GND (有一定内阻)开漏输出和推挽输出相比结构基本相同,但只有下拉晶体管T1 而没有上拉晶体管。同样,T1 实际上也是多组可编程选择的晶体管。开漏输出的实际作用就是一个开关,输出“1 ”时断开、输出“ 0”时连接到 GND (有一定内阻).4.钳位二级管其作用是防止从外部管脚Pi n 输入的电压过高或者过低。提高输出电压一种简单的做法:是先在 GPIO 管脚上串联一只二极管 (如 1N4148),然后再接上拉电阻。/学习必备欢迎下载STM32 的 GPIO 管脚深入分析:概述:STM23 的每个 GPIO 引脚都可以由软件配置成输出(推挽

4、或开漏),输入(带或不带上拉或下拉)或复用的外设功能端口。多数GPIO 引脚与数字或模拟的复用外设共用;除了具有模拟输入(ADC)功能的管脚之外,其他的GPIO 引脚都有大电流通过能力。tip :每个 IO 口可以自由编程,单 IO 口寄存器必须要按 32 位 bit 被访问。STM32 的每个 10 端口都有 7 个寄存器来控制一 具体如下 8 种模式:1 )输入浮空(这个输入模式,输入电平必须由外部电路确定,要根据具体电路,加外部上 拉电阻或下拉电阻,可以做按键识别)2)输入上拉(打开 IO 内部上拉电阻)3)输入下拉(打开 IO 内部下拉电阻)4 )模拟输入(应用 ADC 模拟输入)5)

5、 开漏输出(输出端相当于三极管的集电极 要得到高电平状态需要上拉电阻才行 适合于 做电流型的驱动,其吸收电流的能力相对强(一般 20ma 以内).能驱动大电流和大电压,LED 就 使用这种模式。 )6)推挽式输出(可以输出高,低电平,连接数字器件。推挽式输出输出电阻小,带负载能力强)7) 推挽式复用功能(复用是指该引脚打开remap 功能)8) 开漏复用功能(复用是指该引脚打开remap 功能)tip:上拉输入模式:区别在于没有输入信号的时候默认输入高电平(因为有弱上拉)。下拉输入模式:区别在于没有输入信号的时候默认输入低电平(因为有弱下拉)。(上拉就是使 IO 口接上拉电阻到 VCC 了,跟

6、 51 一样,下拉就是使 IO 口接下拉电阻到 GND 了,浮空就是即不接上拉,也不接下拉,这样的话IO 默认输入电平不确定 )浮空输入模式:顾名思义也就是输入什么信号才是什么信号,对于浮空输入要保证有明确的 输入信号。学习必备欢迎下载库函数:GPIO_Mode_AIN 模拟输入GPIO_Mode_IN_FLOATING 浮空输入GPIO_Mode_IPD 下拉输入GPIO_Mode_IPU 上拉输入GPIO_Mode_Out_OD 开漏输出GPIO_Mode_Out_PP 推挽输出GPIO_Mode_AF_OD 复用开漏输出GPIO_Mode_AF_PP 复用推挽输出二.TM32 的每个 I

7、O 端口都有 7 个寄存器来控制,具体七个寄存器如下:CRL 端口配置低寄存器CRH 端口配置高寄存器IDR 端口输入数据寄存器ODR 端口输出数据寄存器BSRR 端口位设置/复位寄存器BRR 端口位复位寄存器LCKR 端口配置锁定寄存器EVCR 事件控制寄存器MAPR 复用重映射和调试 I/O 配置寄存器EXTICR 外部中断线路 0-15 配置寄存器tip :*学习必备欢迎下载*CRL(端口配置低寄存器):复位值为 0X4444 4444 ( 4 化成二进制为 0100),从上图可以看 到,复位值其实就是配置端口为浮空输入模式得出:STM32 的 CRL 控制着每个 10 端口( AG)的

8、低 8 位的模式。每个 10 端口的位占用 CRL 的 4个位,高两位为 CNF,低两位为 MODE。CRL 控制的是低 8 位输出口,而 CRH 控制的是高 8 位输出口在输入模式(MODE1:0=00):00:模拟输入模式01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式11:保留在输出模式(MODE1:000):00:通用推挽输出模式01:通用开漏输出模式10: 复用功能推挽输出模式11: 复用功能开漏输出模式MODEy1:0: 端口 x 的模式位:00:输入模式(复位后的状态)01:输出模式, 最大速度10MHz10:输出模式, 最大速度2MHz11:输出模式, 最大速度50M

9、Hz*端口输入数据寄存器(GPIOx_IDR)tip :学习必备欢迎下载IDR 是一个 GPIOx_IDR 的端口输入数据寄存器的简称 (ODR 是输入数据寄存器的简称), 要想知道某个 IO 口的状态,就要读这个寄存器,再从读出的寄存器值分析出某个管脚位的状态,就可以知道这个管脚的状态了;IDR 寄存器只用了低 16 位。该寄存器为只读寄存器,并且只能以 16 位的形式读出。端口输出数据寄存器(GPIOx_ODR)ODR 是一个端口输出数据寄存器,其作用就是控制端口的输出,对ODR 对应寄存器位置1 即对应的 GPIO 管脚就会输出高电平。该寄存器也只用了低 16 位,并且该寄存器可读可写,

10、如果读的话,从该寄存器读出来的数据都是0,所以读是没有意义的;只有写是有效的。总结:GPIOx_IDR 是端口的输入数据寄存器,GPIOx_ODR 是端口的输出寄存器,我们配置引脚的输入输出模式是通过GPIOx_CRL 和 GPIOx_CRH 两个寄存器来配置的,但是每个端口的 16 个引脚它们有的可能是输出模式,有的是输入模式,甚至一会输出一会输入,而GPIOx_IDR 和GPIOx_ODR 两个寄存器是以字模式(读一次就是访问2 个字节,一个字等于 2 个字节)访问而不能以 bit 模式(bit 模式表示一次访问一个 bit位,一个字节等于 8 个 bit,一个字等于 16 个 bit)访

11、问,GPIOx_IDR 只能读,而 GPIOx_ODR 可以读写。三总结一下 STM32 的 IO 控制寄存器的作用:1)STM32 的 CRL 和 CRH 寄存器主要是用来 IO 管脚的方向和速率以及何种驱动模式2)STM32 的 ODR 寄存器是用来控制 IO 口的输出高电平还是低电平3)STM32 的 IDR 寄存器主要是用来存储 10 口当前的输入状态(高低电平)的。学习必备欢迎下载4)STM32 的 BSRR 寄存器主要是用来直接对10端某一位直接进行设置和清除操作,通过这 个寄存器可以方便的直接修改一个引脚的高低电平5)STM32的 BRR寄存器用来清除某端口的某一位位0,如果该寄

12、存器某位为 0,那么它所 对应的那个引脚位不产生影响;如果该寄存器某位为 1,则清除对应的引脚位。6)STM32 的 LCKR 用来锁定端口的配置,当对相应的端口位执行了LOCK 序列后,在下次系 统复位之前将不能再更改端口位的配置。/GPIO 的输出模式下几种速度的区别:2MHz、10MHz、50MHz ;这个又可以理解为输出驱动电路的不同响应速度(芯片内部在 I/O 口的输出部分安排了多个响应速度不同的输出驱动电路, 用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动电路模块,达到最佳的噪声控制和降低功耗的目的)。、/在 STM32 中如何配置片内外设使用的10 端

13、口:首先,一个外设在使用前,必须先配置和激活启动该外设的时钟,比如GPIO 端口 B,那么就要激活 GPIOB 的时钟,比如 GPIOA 那么使用 PA2管脚前,必须要前激活 GPIOA 端口的时钟,只有启动时钟后,这个外设才变得激活可用。学习必备欢迎下载到外设的输入输出功能基本有三种情况:1)管脚输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能 的开漏输出。2)管脚输入:则根据外围电路的配置可以选择浮空输入、带上拉输入或带下拉输入。3)ADC 对应的管脚:配置管脚为模拟输入。值得注意的是:这里如果把端口配置成复用输出功能,贝 U 该引脚与它当前连的信号电路断开,和复用

14、功能信号电路连接,所以将管脚配置成复用输出功能后,如果只激活了该引脚的 GPIO 端口的时钟,而忘记把复用功能的时钟激活, 那么它的输出将不确定,这样会产生异常的现。/APB2ENR 寄存器是 APB2 总线上的外设时钟使能寄存器/端口位设置/清除寄存器(GPIOx_BSRR) (x=A.E):位 31:16 这些位只能写入并只能以字(16 位)的形式操作。0 :对对应的 ODRy 位不产生影响1 :清除对应的 ODRy 位为 0注:如果同时设置了 BSy 和 BRy 的对应位,BSy 位起作用。位 15:0 这些位只能写入并只能以字(16 位)的形式操作。学习必备欢迎下载0 :对对应的 OD

15、Ry 位不产生影响1 :设置对应的 ODRy 位为 1/端口位清除寄存器(GPIOx_BRR) (x=A.E)位 31:16 保留。BRy:清除端口 x 的位 y (y = 015) (Port x Reset bit y)位 15:0 这些位只能写入并只能以字(16 位)的形式操作。0 :对对应的 ODRy 位不产生影响1 :清除对应的 ODRy 位为 0/端口配置锁定寄存器(GPIOx_LCKR) (x=A.E)当执行正确的写序列设置了位16(LCKK 时,该寄存器用来锁定端口位的配置。位15:0用于锁定 GPIO 端口的配置。在规定的写入操作期间,不能改变 LCKP15:0o 当对相应的端口位执行了LOCK 序列后,在下次系统复位之前将不能再更改端口位的配置。每个锁定位锁定控制寄存器(CRL, CRH 中相应的 4 个位。位 31:17 保留。位 16 LCKK 锁键(Lock key)该位可随时读出,它只可通过锁键写入序列修改。0:端口配置锁键位激活1:端口配

温馨提示

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

评论

0/150

提交评论