STM32 GPIO_SetBits 和 GPIO_ResetBits 的使用(附详细代码 = 引脚底层配置 + LED流水灯示例代码)

介绍:

  • STM32F103ZET6
  • 实现功能:控制某个GPIO引脚的输出电平(拉高 / 拉低)
  • GPIO_SetBits   拉高引脚输出电平
  • GPIO_ResetBits 拉低引脚输出电平

引脚底层配置:

  • 输入类型:推挽输出
  • 引脚底层配置代码:
    
    /*引脚底层配置函数*/ 
    void LED_IO_Configration(void)
    {
    	GPIO_InitTypeDef  GPIO_InitStructure;
    		
    	/*使能 APB2 - PE 端口时钟*/ 
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);	   
    
    	/*PE12引脚配置*/	
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;	  			// 引脚 PE12
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		// 推挽输出
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		// IO口速度为50MHz
    	GPIO_Init(GPIOE, &GPIO_InitStructure);	  			 	
    }
    
    

GPIO输出电平控制函数:

  • 代码:
    
    GPIO_SetBits(GPIOE, GPIO_Pin_12);					// PE12 输出高电平
    
    GPIO_ResetBits(GPIOE, GPIO_Pin_12);					// PE12 输出低电平
    
    

LED流水灯示例:

  • led.h  宏定义:

    
    typedef enum 
    {
    	OFF = 0, 
    	ON = !OFF
    }LEDState;
    
    #define LED(EN)		(EN) ? (GPIO_SetBits(GPIOE, GPIO_Pin_12)) : (GPIO_ResetBits(GPIOE, GPIO_Pin_12))
    
    
  • led.c

    
    #include "stm32f10x.h"
    #include "delay.h"
    #include "led.h"
    
    int main(void)
    {
    	SystemInit();
    	delay_init();
    	
    	/*引脚底层配置函数*/ 
    	LED_IO_Configration();
    
    	while(1)
    	{
    		/*控制 LED 亮 500ms*/
    		LED(ON);
    		delay_ms(500);		
    		
    		/*控制 LED 灭 500ms*/
    		LED(OFF);
    		delay_ms(500);
    	}
    }
    
    
欢迎纠正,(づ ̄3 ̄)づ╭❤~

如果此文能帮助到素未谋面的你,那真是太开心了喵~( * Φ ω Φ * )

你可能感兴趣的:(#,IO引脚,stm32,单片机,gpio)