wenbo2005.online

学习记录 / STM32

流水灯

STM322024-03-17

1,开启PA0~PA7 八个LED灯//==================================低八位

void LED_display(uint8_t Pin)
{
    HAL_GPIO_WritePin(GPIOA,0xff,GPIO_PIN_SET);//========================1为有效,0无效
    HAL_GPIO_WritePin(GPIOA,Pin,GPIO_PIN_RESET);
}
uint8_t led_num=(uint8_t)-1;
uint8_t led_ctrl;
uint32_t led_time=0;
void LED_proc()//=============================循环程序
{
    if(uwTick-led_time<200) return;
    led_time=uwTick;

    led_ctrl&=~0x01<<(led_num);
    led_num=(led_num+1)%8;
    led_ctrl^=0x01<<(led_num);
    LED_display(led_ctrl);
}

//===================================如果是PB8~PB15//============================高八位

void LED_display(uint8_t Pin)
{
    HAL_GPIO_WritePin(GPIOB,0xff00,GPIO_PIN_SET);//===================1111111100000000用高八位,对应着PB8~PB15
    HAL_GPIO_WritePin(GPIOB,Pin<<8,GPIO_PIN_RESET);
}

例如:

0x01=>00000000  00000001  将其左移八位结果为:00000001  0000000,前八位有效

https://www.runoob.com/w3cnote/bit-operation.html