GPIO
1. 一共有7组IO,每组有16个口 即一共有16*7=112个口。
2.每个口基本上都可以触发中断(区别于51,51只有P3^2, P3^2).
3.共有8中输入输出模式
(1)浮空输入——直接进入寄存器,mcu直接读取。
(2)上拉输入——如果没有输入信号或者悬空,默认为高。
(3)下拉输入——如果没有输入信号或者悬空,默认为低。
(4)模拟输入——在adc采集电压通道时,不通过施密斯触发器,不能在输入寄存器中读取到值,直接进入到adc模块。
(5)推挽输出—PMOS管和NMOS管都起作用,输出为高电平时,NMOS管关闭,PMOS管打开,输出为高。输出为低电平时,NMOS管打开,PMOS管关闭,输出为低。
(6)开漏输出——PMOS管关闭,NMPS管打开。输出为低,NMOS管打开,输出为低 。输出为高时,NMOS管关闭,PMOS管关闭,不会输出,输出只取决于外部的上拉或者下拉。
(7)推挽复用输出——输出信号来源为其他外设,其他同上。
(8)开漏复用输出——输出信号来源为其他外设,其他同上。
初始化GPIO口流程
GPIO_InitTypeDef LED_GPIO; //gpio结构体
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE); //使能时钟
LED_GPIO.GPIO_Mode=GPIO_Mode_OUT; //选择输出模式
LED_GPIO.GPIO_OType=GPIO_OType_PP; //推挽
LED_GPIO.GPIO_Pin=GPIO_Pin_7; //选择7口
LED_GPIO.GPIO_PuPd=GPIO_PuPd_UP; //上拉
LED_GPIO.GPIO_Speed=GPIO_Medium_Speed; //中速
GPIO_Init(GPIOE,&LED_GPIO); //gpio口初始化