STM32_GPIO输出
以stm32f103c8t6为例
一、函数介绍
1、GPIO_SetBits
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能描述 | 设置指定的数据端口位(1) |
---|---|
输入参数 1 | GPIOx:x 可以是 A,B,C,D 或者 E,来选择 GPIO 外设 |
输入参数 2 | GPIO_Pin:待设置的端口位 该参数可以取 GPIO_Pin_x(x 可以是 0-15)的任意组合 |
例如:
GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
2、GPIO_ResetBits
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
功能描述 | 清除指定的数据端口位(0) |
---|---|
输入参数 1 | GPIOx:x 可以是 A,B,C,D 或者 E,来选择 GPIO 外设 |
输入参数 2 | GPIO_Pin:待清除的端口位 该参数可以取 GPIO_Pin_x(x 可以是 0-15)的任意组合 |
例如:
GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
注:函数末尾的Bits意味着多位,即可以多位同时设置
3、GPIO_WriteBit
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
功能描述 | 设置或者清除指定的数据端口位 |
---|---|
输入参数 1 | GPIOx:x 可以是 A,B,C,D 或者 E,来选择 GPIO 外设 |
输入参数 2 | GPIO_Pin:待设置或者清除指的端口位 该参数可以取 GPIO_Pin_x(x 可以是 0-15)的任意组合 |
输入参数 3 | BitVal: 该参数指定了待写入的值 该参数必须取枚举 BitAction 的其中一个值 Bit_RESET: 清除数据端口位 Bit_SET: 设置数据端口位 |
例如:
GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);
4、GPIO_Write
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
功能描述 | 向指定 GPIO 数据端口写入数据 |
---|---|
输入参数 1 | GPIOx:x 可以是 A,B,C,D 或者 E,来选择 GPIO 外设 |
输入参数 2 | PortVal: 待写入端口数据寄存器的值 |
例如:
GPIO_Write(GPIOA, 0x1101);
5、GPIO_Init
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
功能描述 | 根据 GPIO_InitStruct 中指定的参数初始化外设 GPIOx 寄存器 |
---|---|
输入参数 1 | GPIOx:x 可以是 A,B,C,D 或者 E,来选择 GPIO 外设 |
输入参数 2 | GPIO_InitStruct:指向结构 GPIO_InitTypeDef 的指针,包含了外设 GPIO 的配置信息 |
例如:
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
二、参数介绍
1、Port(端口)与Pin(引脚)
GPIOx与GPIO_PIN
端口是单片机内部(CPU单元)和外部IO的接口组,比如说PA端口,有16个引脚,例如PA0~PA15。在STM32F103C8T6只有PA、PB以及个别PC引脚。
2、GPIO_InitTypeDef
端口初始化信息的结构体
typedef struct{
uint16_t GPIO_Pin;//引脚
GPIOSpeed_TypeDef GPIO_Speed;//传输速率
GPIOMode_TypeDef GPIO_Mode;//输入模式
}GPIO_InitTypeDef;
3、GPIO相关寄存器(GPIOx指向)
- GPIOx_CRL:端口配置低寄存器
- GPIOx_CRH:端口配置高寄存器
- GPIOx_IDR:端口输入寄存器
- GPIOx_ODR:端口输出寄存器
- GPIOx_BSRR:端口位设置/清除寄存器
- GPIOx_BRR :端口位清除寄存器
- GPIOx_LCKR:端口配置锁存寄存器
4、GPIO工作模式
STM32的GPIO共有8种工作模式,分别是输入模式的模拟输入、上拉输入、下拉输入和浮空输入以及输出模式的推挽输出、开漏输出、推挽复用输出和开漏复用输出。