【STM】GPIO工作原理及寄存器、5V容忍

GPIO工作方式:

4种输入模式:

  输入浮空:一般多用于外部按键输入,此状态下IO口的电平状态完全由外部输入决定,常用作KEY识别

  输入上拉:将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用

  输入下拉:将不确定的信号通过一个电阻嵌位在低电平,电阻同时起限流作用

  模拟输入:输入为模拟量,用于ADC模拟输入或低功耗下省电

4种输出模式:

  开漏输出:IO口为0输出强低电平,IO口为1时需要通过外部电阻拉高,输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行

         适合做电流型驱动,吸收电流能力相对较强(20mA以内)

       IO口状态由上拉电阻拉高电平,但可由外部电路改为低电平或不变,可以读IO口输入电平变化

  推挽输出:可以输出强高低电平,连接数字器件

       读输入值时未知

  开漏复用:片内外设功能(TX1,MOSI,MISO,SCK,SS)

  推挽复用:片内外设功能(I2C的SCL,SDA)

4种最大输出速度:2MHZ

 

配置寄存器:

7组IO口(GPIOA-GPIOG),每组有16个IO(GPIOA.0-GPIOA.15),每组IO口含有下边10个寄存器,控制16个IO口

端口模式寄存器(GPIOx_MODER):每IO口两位

1 MODERy[1:0]:(y=0...15)
2 00:输入(复位状态)
3 01:通用输出模式
4 10:复用功能模式
5 11:模拟模式

端口输出类型寄存器(GPIOx_OTYPER):每IO口一位,高16位不用

1 OTy[1:0]:(y=0...15)
2 0:输出推挽(复位状态)
3 1:输出开漏 

端口输出速度寄存器(GPIOx_OSPEEDR):每IO口两位

1 OSPEEDRy[1:0]:(y=0...15)
2 00:2MHz
3 01:25MHz
4 10:50MHz
5 11:100MHz

端口上拉下拉寄存器(GPIOx_PUPDR):

1 PUPDRy[1:0]:(y=0...15)
2 00:无上拉或下拉
3 01:上拉
4 10:下拉
5 11:保留

端口输入数据寄存器(GPIOx_IDR):

1 IDRy[15:0]:(y=0...15)
2 端口输入数据

端口输出数据寄存器(GPIOx_ODR):

1 ODRy[15:0]:(y=0...15)
2 端口输出数据

端口置位复位寄存器(GPIOx_BSRR):

1 BRy[15:0]:位31:16
2 0:不会对相应的ODRx位执行任何操作
3 1:对相应的ODRx位进行复位
4 
5 BSy[15:0]:位15:0
6 0:不会对相应的ODRx位执行任何操作
7 1:对相应的ODRx位进行置位
8 同时对BSx和BRx置位,则BSx的优先级更高

端口配置锁存寄存器(GPIOx_LCKR):

两个复位功能寄存器(GPIOx_AFRL & GPIOx_AFRH):

 

引脚复用:

通过芯片资料中的pin and ball definitions查看,将普通IO口复用为外设引脚

 

5V容忍:

STM32的引脚一般接的电压是3.3V的,但有些管脚允许接入5V电压,通过pin and ball definitions中的I/O structure查看,如果显示FT就是可以容忍5V,未标识FT则代表不支持5V容忍

  

 

 

posted @ 2016-03-05 19:34  喜闻乐见小逗逗  阅读(2982)  评论(0编辑  收藏  举报