【备赛】点亮LED

LED部分的原理图

led前面有锁存器,这是为了防止led会受到lcd的干扰(lcd也需要用到这些引脚)。

每次想要对led操作,就需要先打开锁存器,再执行操作,最后关闭锁存器。

这里需要注意的是,引脚配置为低电平时,LED才会点亮。

具体操作

1)配置

首先要在stm32CubeMX里面配置PD2为高电平,目的是打开锁存器。

然后配置PC8-PC15都是高电平,默认刚上电是关闭的。

这里给高电平,但是不用上拉电阻。

2)代码

这是截取的一小段代码。需要强调的是:

cpp 复制代码
 
一堆代码
 
  HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
  
  LCD_Init();
  LCD_Clear(Black);
  LCD_SetBackColor(Black);
  LCD_SetTextColor(White);
  
一堆代码

一定要在LCD初始化之前关闭锁存器。

这样LCD无论如何操作也不会对led造成干扰。

这就是你刚才配置的那个 锁存器和PC8-PC15。

3)相关函数

cpp 复制代码
void led_all_off() //关闭所有的LED灯
{
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}

void led_all_on() //打开所有的LED灯
{
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 0);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}

void led_on(int n) //只打开某一个LED灯(n取值为 1 ~ 8)
{
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, 1);
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7 << n, 0);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}

void led_status(unsigned char c) //打开一部分LED灯(传入的8位数据分别控制8个灯)
{
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
	GPIOC -> ODR = (c << 8);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 0);
}
相关推荐
药9552 小时前
STM32开发(USART总线:UART总线)
stm32·单片机·嵌入式硬件
David WangYang2 小时前
技巧:调试 SCPI 和 VISA 自动化(包括 NI I/O 跟踪)
stm32·单片机·自动化
清风6666663 小时前
基于51单片机手机无线蓝牙APP控制风扇调速设计
单片机·mongodb·智能手机·毕业设计·51单片机·课程设计
JXNL@3 小时前
什么是PFC控制器
单片机·嵌入式硬件
RaLi和夕4 小时前
单片机学习笔记.C51存储器类型含义及用法
笔记·单片机·学习
月阳羊5 小时前
【硬件-笔试面试题-76】硬件/电子工程师,笔试面试题(知识点:H桥驱动电路的设计要点)
java·单片机·嵌入式硬件·面试·职场和发展
wdfk_prog6 小时前
Python脚本深度解析:实现基于YMODEM的单片机固件自动化升级
python·单片机·自动化
纳祥科技6 小时前
分享:一种为蓝牙、WIFI、U段音频发射设备提供ARC回传数字音频桥接功能的方案
网络·单片机·音视频
代码总长两年半9 小时前
STM32物联网项目---ESP8266微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制---代码篇(四)
stm32·单片机·物联网
玉~你还好吗9 小时前
【嵌入式电机控制#进阶10】参数辨识(一):电阻辨识
单片机·嵌入式硬件