【备赛】点亮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);
}
相关推荐
嵌入式仿真实验教学平台6 小时前
深入探索IIC-OLED显示技术:嵌入式仿真平台如何重塑高校教学范式——深圳航天科技创新研究院技术赋能新一代工程教育
科技·单片机·gd32·嵌入式仿真·iic-oled显示技术
十碗阳春面7 小时前
TI 毫米波雷达走读系列—— 3DFFT及测角
单片机·嵌入式硬件·毫米波雷达·mmwave radar·awr/iwr系列
CPETW7 小时前
同旺科技 USB TO SPI / I2C适配器(专业版)--EEPROM读写——C
c语言·开发语言·科技·stm32·单片机·嵌入式硬件·电子
国科安芯12 小时前
【AS32系列MCU调试教程】调试工具:Eclipse调试工具栏与窗口的深入分析
单片机·嵌入式硬件·eclipse
nuannuan2311a12 小时前
9N65-ASEMI照明系统应用专用9N65
单片机·嵌入式硬件
woshihonghonga12 小时前
高级定时器TIM1、TIM8
stm32·单片机·嵌入式硬件
腾飞的信仰12 小时前
举例说明单片机,主循环和中断资源访问冲突的案例
单片机·嵌入式硬件·mongodb
腾飞的信仰1 天前
单片机,主循环和中断资源访问冲突的案例
单片机·嵌入式硬件
猿来不是梦1 天前
RT_Thread内核源码分析(五)——内存管理@小堆内存管理算法
stm32·单片机·算法·系统架构·rt_thread操作系统
aerror1 天前
使用mpu6500/6050, PID,互补滤波实现一个简单的飞行自稳控制系统
单片机·飞控