一:点亮led
1.led点亮原理
led的点亮由PC8~15的高低电平控制,引脚的高低电平输入由一个SN74锁存器控制,当锁存器的PD2引脚为高电平(1)时,可以改变右端1D~8D的引脚状态,然后输入到左端控制led。
2:led配置
在软件中将手册里led对应的引脚设置为Output模式,在PGIO中将其设置为默认高电平,led默认为熄灭状态。
3.led点亮代码
void led_show(uint8_t led,uint8_t mode)
{
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET) //PIOD2设置为高电平,也就是打开锁存器
if(mode)
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8<<(led-1),GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8<<(led-1),GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET) //PIOD2设置为低电平,也就是关闭锁存器
}
三:解决led与lcd引脚冲突
2025年用的板子中,led8个引脚完全与lcd重合,在使用时会出现引脚冲突问题。
led由锁存器控制电平能否输入,所以为了时其使用不被lcd影响可以先将其GPIOD-2置低。但是使用按键控制led的功能时会将其锁存器打开,此时lcd也在不断的更新引脚电平导致引脚冲突再次出现,此时可以在每一个lcd函数中加入保持led引脚输出的电平语句解决如下面中的tem,其功能就是在执行LCD函数后保持原来led引脚的电平值
step1.在lcd初始化前将锁存器设置为低电平,使得后面lcd初始化时不会改变原来led电平值
step2.去所有lcd函数中添加保持原来GPIOC值得语句