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)