p;也可以用于多个引脚电平的置位。
1 GPIO_SetBits(GPIOA, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);
(10)、void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:清零相应GPIO端口引脚的电平值。
举例:将GPIOA的pin1管脚电平置为0。
也可以用于多个引脚电平的清零。
(11)、void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
作用:将GPIO端口的指定管脚电平置1或置0。
举例:将GPIOA的pin1管脚电平置为1。
也可以用于多个引脚电平操作。
(12)、void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
作用:将GPIO端口的所有管脚电平置1或置0。
举例:将GPIOA端口的所有管脚电平置为1。
(13)、void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:翻转指定GPIO引脚的输出电平,即0变为1,1变为0。
举例:翻转GPIOA的pin1管脚电平值。
(14)、void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
作用:将GPIO的指定管脚配置成复用功能管脚。
举例:将GPIOA的pin9管脚配置成串口USART1的功能管脚。
三、配置流程
配置流程主要在实际的驱动配置中对GPIO进行初始化的操作,根据实际项目应用开发中的芯片GPIO引脚的定义,进行合理的配置。图3所示为GPIO的基本配置操作流程。?
图3 GPIO配置流程
(1)、使能对应GPIO的时钟
在配置GPIO的开始,首先需要将对应的GPIO模块的时钟打开,这样才能为GPIO工作提供动力源,因此只有先将GPIO的时钟打开才能使GPIO正常的工作。
关于STM32芯片内部整体的时钟系统,可以回顾之前明解STM32时钟系统的文章介绍。STM32的GPIO模块是挂载在芯片内部AHB1总线(AHB:高级高性能总线)上的外设,因此就需要打开GPIO在AHB1总线上对应的时钟。AHB1总线上的外设时钟开关在STM32提供的标准库函数中通过函数 RCC_AHB1PeriphClockCmd ()来实现的。例如调用:
这样就将GPIOA的时钟打开,也可以同时打开多个GPIO端口的时钟:
(2)、引脚功能配置
接下来对GPIO引脚的配置是需要根据实际的项目应用要求,根据各个芯片管脚的定义来对引脚的功能进行合理的配置,主要是根据引脚是使用成普通IO输出还是输入,复用功能还是模拟管脚来调用GPIO_Init()函数进行配置。举例说明:
用于普通IO输出时:
需要注意的是,初始化输