STM32 控制一个LED亮灭 | 宏定义方法

1、main.c

void main(void)
{    
      //PB2 led
  	  led(1);                     //点亮led
	  delay_ms(20);       
	  led(0);                     //熄灭led
	  delay_ms(2000);    

/********************************************************************/

        //寄存器操作GPIOB PB2方法	
	    GPIOB->BSRR = 0x04;                 //BSRR寄存器PB2置1, 在第3位写1, 0b100
	    delay_ms(20);
	    GPIOB->BSRR = 0x40000;              //BSRR寄存器PB2置0,在第18位写1, 0b0100 0000 0000 0000 0000 
	    delay_ms(2000);      

}
2、led.h
#ifndef __LED_H
#define __LED_H

//
#include "gpio.h"


//宏定义  三目运算符定义 led(1) PB2高电平,     led(0) PB2低电平
#define led(x) do{ x? \
	                     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 1): \
	                     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, 0); \
                 } while(0)

//宏定义 PB2上的led翻转电平
#define led_toggle()  do{ HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);} while(0)


//我的函数声明
void led_init(void);

#endif
3、led.c
#include "led.h"


//初始化GPIOB和PB2
void led_init(void)
{

        //使能GPIOB时钟
	    __HAL_RCC_GPIOB_CLK_ENABLE(); 

        //定义结构体变量led
        GPIO_InitTypeDef led;       
	
	    //led结构体赋值
        led.Pin = GPIO_PIN_2;
	    led.Mode = GPIO_MODE_OUTPUT_PP;
	    led.Speed = GPIO_SPEED_FREQ_LOW;
	 
	    //初始化结构体
	    HAL_GPIO_Init(GPIOB, &led);
	
	    //关闭PB2 LED
	    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
	    
	    
	    
	
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值