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

介绍:

  • STM32F103ZET6
  • 实现功能:控制某个GPIO引脚的输出电平(拉高 / 拉低)
  • GPIO_SetBits   拉高引脚输出电平(等同于 GPIOx -> BSRR = GPIO_Pin_xx)
  • GPIO_ResetBits 拉低引脚输出电平(等同于 GPIOx -> BRR = GPIO_Pin_xx)

引脚底层配置:

  • 输入类型:推挽输出
  • 引脚底层配置代码:
    
    /*引脚底层配置函数*/ 
    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 ̄)づ╭❤~

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

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的小肥丸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值