GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; GPIO_Pin_x可为:GPIO_Pin_None 无引脚被选中 GPIO_Pin_0 选中引脚0 GPIO_Pin_1 选中引脚1 GPIO_Pin_2 选中引脚2 GPIO_Pin_3 选中引脚3 GPIO_Pin_4 选中引脚4 GPIO_Pin_5 选中引脚5 GPIO_Pin_6 选中引脚6 GPIO_Pin_7 选中引脚7 GPIO_Pin_8 选中引脚...
在GPIO_Init()函数中,正是通过对0x01进行循环左移操作,通过搜索与输入引脚匹配时移位的次数来判断引脚编号的。(疑问1:为何用循环移位,不直接用switch…case呢?) 头文件中还定义了两个枚举类来分别管理GPIO的模式(GPIO_Mode_TypeDef)和输出模式的速度(GPIO_Speed_TypeDef),并定义了一个结构体(GPIO_InitTypeDef)来...
下面放一些常用函数的例子: HAL_GPIO_WritePin();HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);HAL_GPIO_ReadPin();HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);HAL_GPIO_TogglePin();HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1); 下面我们来看一看他们各自是如何好、实现的因为HAL_GPIO_Wri...
1、GPIOx_CRL(引脚0~7)这个寄存器是配置整个端口的,而不是对应的pin脚 2、GPIOx_CRH(引脚15~8)这个寄存器是配置整个端口的,而不是对应的pin脚 3、GPIOx_BSRR 配置端口里面对应的(0~15)的引脚 ②、复用设置 可以将普通GPIO配置为SPI或者i2c等功能总线,后续在讲,配置复用重映射和调试I/O配置寄存器(AFIO_MAP...
在固件库中设置 ODR 寄存器的值来控制 IO 口的输出状态是通过函数 GPIO_Write 来实现的: voidGPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); 该函数一般用来往一次性一个 GPIO 的多个端口设值。 四.寄存器BSRR 这个寄存器是端口位设置/清除寄存器,用来设置 GPIO 端口的输出位是 1 还是 0,和ODR寄存器...
GPIO_Mode_AF_PP 复用推挽输出 2.3.3 函数 GPIO_Write 向指定GPIO数据端口写入数据,输入参数GPIOx和PortVal待写入的数值。 我这里的开发板LED共阳接法,控制时把要点亮的位设置为低,其余设置高。如点亮L1: GPIO_Write(GPIOC,0xFE); 1. 2.3.4 GPIO_SetBits ...
ODR寄存器只用到了前面的16位。作用是控制GPIOx(x=A ~ G)的输出,即设置某个IO口输出低电平还是高电平,只有在输出模式下有效。 在固件库中设置ODR寄存器来控制IO口的输出状态是通过这两个函数来实现的:voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);//读取一组、voidGPIO_Write(GP...
4个设置输出电平函数: void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); ...
01. GPIO固件库概述 stm32f4xx_gpio.h GPIO相关函数和类型的声明 stm32f4xx_gpio.c GPIO相关函数具体实现。 02. GPIO相关类型 GPIO相关的类型几乎都在stm32f4xx_gpio.h文件中。 GPIO的模式 /** * @brief GPIO Configuration Mode enumeration */ typedef enum { GPIO_Mode_IN = 0x00, /*!< GPIO Input...
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); ②GPIO结构体初始化函数 void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); ③设置一组IO口为高电平 void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); ...