STM32HAL学习笔记

**

STM32G431蓝桥杯HAL库学习笔记

**


LED灯互不干扰且不干扰LCD屏幕点亮


前言

由于led灯与lcd屏幕共用了PC8-PC15的引脚,所以如果直接进行相应的操作会对两者的显示造成影响。


一、电路板原理图

在这里插入图片描述

二、程序笔记

1.编程原理

利用锁存器SN74HC573进行LED 灯数据锁存,需要点亮led灯时,先读取GPIOC->ODR寄存器的值,在向ODR寄存器写入相应的16进制的数据,向锁存器的LE脚写入高电平打开寄存器,在输入低电平关闭锁存器,复位ODR寄存器的值。

2.程序源码

代码如下(示例):
bst_led.c文件

void LEDx_ON(uint8_t n)  //打开led
{
	LED_MODE&=((0xfeff<<(n-1))|(0xfeff>>(16-n+1))); 
	GPIOC->ODR=LED_MODE;
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_Delay(10);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
void LEDx_OFF(uint8_t n)  //关闭led
{
	LED_MODE|=((0x0100<<(n-1))|(0x0100>>(16-n+1)));
	GPIOC->ODR=LED_MODE;
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_Delay(10);
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

main.c

#include "main.h"
#include "bst_led.h" 
uint16_t LED_MODE=0XFFFF;
int main(void)
{
  LED_MODE=GPIOC->ODR;  //不这样好像格式会出问题
  LED_MODE|=0xff00;     //另led 灯的初始值均为关闭状态
  while (1)
  {  
  }
}


总结

所使用的HAL库函数
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET); //GPIO口写函数

功能:可以使LED灯单个和多个独立显示互不影响

新手小白所写,用于记录学习笔记,如果有误望大佬指出,勿喷,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值