LED指示灯

33bc984040681bc16840cd618f6cea3.png
e15c995bf1c20c12da6910f163623e1.png

#include"led.h"

    void LED_Disp(uchar dsLED)
    {
        HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
        //置高电平 熄灭LED
        HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);
            //左移八位
        HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_RESET);
            //PD2高电平时传输数据
            //之后拉低电平防止引脚冲突导致误写
    }

为什么是dsLED<<8

GPIO在内存中储存 需要控制16-8引脚 8-0与其无关系
而dsLED默认在前八位 移动八位则操作了16-8
dsLED如为 0x65 二进制0110 0101
左移八位 0110 0101 0000 0000
数电知识 有待学习

  /* USER CODE BEGIN 2 */
    LED_Disp(0x00);
  /* USER CODE END 2 */
  //89行写入LED_Disp(0x00)初始化 熄灯

LED1亮灯 LED延迟熄灭 500ms

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
        LED_Disp(0x01);
        HAL_Delay(500);
        LED_Disp(0x00);
        HAL_Delay(500);
  }

烧录写入 完成

烧录成功 运行成功 LED未亮灯

最后修改:2023 年 04 月 17 日
如果觉得我的文章对你有用,只需评论或转发支持,谢绝投喂!