STM32引脚说明
1.以STM32F103ZET6为例
- 144引脚,共有七组GPIO,GPIOA——GPIOG,一组有16个IO口,一共112个IO口
- PA0——PA15
GPIO基本结构
- ADC端口不容忍5V
- FT都可以容忍5V
GPIO工作方式
输入方式
- 浮空输入
- 上拉输入
- 下拉输入
- 模拟输入
输出方式
- 开漏输出
- 复用开漏输出
- 推挽输出
- 复用推挽输出
推挽输出:输出强高低电平,连接数字器件
开漏输出:输出强低电平,高电平要靠外部上拉电阻
一组GPIO相关寄存器配置
1.两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)
- (32+32)/4=16个IO口
- 举个栗子:PA0口,MODE0(两个位):
- 00:输入模式(复位状态)
01:输出模式 10MHZ
10:输出模式 2 MHZ
11:输出模式 50MHZ - CNF0 (两个位):
MODE0=0
00:模拟输入模式
01:浮空输入模式(复位后状态)
10:上拉/下拉输入模式
11:保留(空位)
MODE0>0
00:推挽输出方式
01:开漏输出方式
10:复用功能推挽输出方式
11:复用功能开漏输出方式
2.两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)
- GPIOx_IDR高16位保留,低16位保存输入的数据
- GPIOx_ODR高16位保留,低16位输出数据,其次,每位可以配置输入方式位上拉还是下拉,上拉为1,下拉为0;举个栗子:PA0,输入方式为上拉,则最低位应该为1。
3.一个32位置位/复位寄存器(GPIOx_BSRR)
- 低16位用来设置ODR寄存器,参考之前原理图,为1,则ODR对应位为1,为0无效;
- 高16位用来设置ODR寄存器,为1,则ODR对应位为0,为0无效(不常用)
4.一个16位复位寄存器(GPIOx_BRR)
- 低16位用来设置ODR寄存器,为1,则ODR对应位为0,为0无效(常用,跟BSRR高16位一样)
- 高16位无效(保留)
5.一个32位锁定寄存器(GPIOx_LCKR)
- 用的较少
端口复用
就是一个端口多个作用,举个栗子:鸡又可以下单,又可以杀了吃鸡肉。(公鸡除外)
重映射
举个栗子:PA9,PA10的串口(TX,RX)重映射到PB6,PB7;