GPIO
GPIO的工作模式:8种
- 浮空输入模式:
- image-20211007133834701
- 输入上拉:
- image-20211007134140428
- 输入下拉:
- image-20211007134207839
- 模拟输入:输入的是连续的电压;
- image-20211007134426538
- 开漏输出:(输出由外部上下拉决定),当开漏状态下输出1时:N-MOS处于关闭状态,也即是引脚内部没有接东西(io口处于浮空状态);输出电压由外部的上拉决定;当开漏状态下输出0时:N-MOS处于开启状态,也就是引脚内部接地;
- image-20211007134711091
- 开漏复用输出模式:(和开漏输出一样:开漏是cpu写寄存器提供0,1,复用的是外设模块提示0,1;
- image-20211007135438892
-
推免输出模式:输出1的时候,P-MOS导通,N-MOS截止,输出0的时候P-MOS截止,N-MOS导通;
+
image-20211007135601648 - 复用推免输出:和推免输出类似;10来自外设;
总结:推免输出可以输出强高电平;开漏输出1的时候需要依靠外部上拉电阻,若是没有外部上拉电阻可能会出问题;
GPIO的寄存器(七个32位寄存器)
-
两个32位的配置寄存器GPIOx_CRL和GPIOx_CRH (每个io口有8种模式三种速度,用4位来标识,每组io有16个引脚,所以每组io需要4*16=64位即2个32位寄存器) CRL配置0-7,CRH配置8-15
-
四位的分配:CNFY[1:0],MODE[1:0];
-
MODE 功能 CNFY 功能(在MODE为输入or输出时有不同意义) 00 输入模式(复位后的状态) 00 模拟输入or通用推免输出 01 输出最大速度0MHz 01 浮空输入模式(复位后的状态)or通用开漏输出 10 输出最大速度2Mhz 10 上下拉输入模式or复用功能推免输出 11 输出最大速度50Mhz 11 保留or复用功能开漏输出
-
-
GPIO_IDR数据输入寄存器;(0-15表示引脚输入的值)
-
GPIO_ODR数据输出寄存器:
- 在输出模式下(0-15位表示引脚要输出的值)
- 在输入模式下也可以配置输入的上下拉(GPIO_ODR[30]是否下拉)(GPIO_ODR[31]是否上拉);
-
端口位设置清除寄存器(GPIO_BSRR)
- image-20211007144246531
- 高16位设置为1(1表示有效0表示无效),低16位设置0(1表示有效,0表示无效);
所有io口都可以作为外部中断输入