1.GPIO的定义
GPIO的英文名字为General Purpose Input Output(通用输入/输出),是单片机中比较常用的引脚。
2.GPIO的配置模式
- 浮空输入
- 上拉输入
- 模拟输入
- 开漏输出
- 推挽输出
- 推挽复用功能
- 开漏复用功能
控制的寄存器为:GPIOx_CRL(端口配置低寄存器)、GPIOx_CRH(端口配置高寄存器)。
3.GPIO的初始化结构体
typedef struct
{
uint16_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured. This parameter can be any value of @ref GPIO_pins_define */
GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins. This parameter can be a value of @ref GPIOSpeed_TypeDef */
GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins.This parameter can be a value of @ref GPIOMode_TypeDef */
}GPIO_InitTypeDef;
GPIO_Pin:指定的gpio的引脚。
GPIO_Speed:GPIO的速率(如果是输入模式的话这个可以忽略不填写)
GPIO_Mode:GPIO的模式(以上的7中模式之一)
4.GPIO点亮一个LED灯
1. 编程步骤
- 开启指定GPIO的时钟
- 初始化GPIO结构体
- 调用GPIO_Init函数
- 输出低电平(其中涉及到的函数可能是GPIO_ResetBits、GPIO_setBits或GPIO_WriteBit)
2. code示例
/**红灯**/
#define LED1_GPIO_PORT GPIOB
#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED1_GPIO_PIN GPIO_Pin_5
/**绿灯**/
#define LED2_GPIO_PORT GPIOB
#define LED2_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED2_GPIO_PIN GPIO_Pin_0
/**蓝灯**/
#define LED3_GPIO_PORT GPIOB
#define LED3_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED3_GPIO_PIN GPIO_Pin_1
int main(void)
{
//开启时钟
RCC_APB2PeriphClockCmd(LED3_GPIO_CLK, ENABLE);
//初始化gpio
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = LED3_GPIO_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LED3_GPIO_PORT,&GPIO_InitStruct);
//输出低电平
GPIO_ResetBits(LED3_GPIO_PORT,LED3_GPIO_PIN);
while(1);
}