LED指示灯
#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未亮灯