1. GPIO简介
GPIO是通用输入/输出端口的缩写。在微控制器(eg:stm32)中,GPIO的作用是设备与外部进行数字信号交换,用于连接外部设备或者是执行控制任务。
2. GPIO引脚
一般在stm32上GPIO被分为PA0-PA15,PB0-PB15……芯片引脚越多对应的编号也就越多。
值得一提的是每个字母下有16个GPIO,对应的正是16位寄存器。
3. GPIO工作模式
- 输入模式(Input Mode):用于读取外部信号的状态。在此模式下,引脚可以接收外部电平信号,并传输给微控制器。(通常情况下输入模式有浮空输入,上拉输入,下拉输入,模拟输入)
- 输出模式(Output Mode):用于控制外部设备,输出逻辑高或逻辑低信号。在此模式下,微控制器可以控制引脚输出高电平或低电平信号。(通常情况下输出模式有开漏输出,推挽输出,复用开漏输出以及复用推挽输出)
- 注意:开漏输出只支持低电平输出,高电平无效,但最大特点是电流容忍度最高。普通情况推挽输出足矣。
4. 对于标准库而言GPIO参数配置
在配置GPIO引脚时,需要设置以下参数:
- 工作模式选择:具体有哪些模式可参照3中所说
- 选择引脚:推挽输出或开漏输出。
- GPIO速度:输出速度的控制,影响上升和下降沿的斜率。
- 以及最后的初始化GPIO
5.GPIO示例程序(标准库)
GPIO_InitTypeDef ga; //GPIO输入 ga.GPIO_Mode= GPIO_Mode_IPU;//定义为上拉输入 /* 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 复用推挽输出 */ ga.GPIO_Pin= GPIO_Pin_6|GPIO_Pin_7; ga.GPIO_Speed= GPIO_Speed_50MHz; //频率设置 GPIO_Init(GPIOA, &ga);//GPIO初始化 uint8_t a=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6); //GPIO引脚状态读取,返回值0为低电平1为高电平 uint16_t b=GPIO_ReadInputData(GPIOA); //该寄存器下16位数据全读取