LED及LCD冲突问题解决及LCD的驱动改进(蓝桥杯嵌入式stm32G431RBT6)

  • 问题描述:

由于LED和LCD有共用引脚、导致调用LCD显示时会修改LED所用gpio的引脚值,导致LED混乱。

  • 解决方法:
static int x=0x00;
static  unsigned char LED5=1;
x^=LED5;
GPIOC->ODR=(x<<13)&0xFF00;
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);

ODR寄存器控制所有LED的亮灭、LCD显示会改变ODR寄存器,因此对LED控制时,需要重新赋值,上面程序实现的是基本的LED闪烁,由于需要位不断取反,所以可以利用异或运算:^,可以实现不断翻转,当然也可以直接if else实现:

static int i=0;
if(i==0)
{
GPIOC->ODR=(1<<13)&0xFF00;
i=1;
}
else
{
GPIOC->ODR=(0<<13)&0xFF00;
i=0;
}
  •  LCD驱动的改进:

原来驱动:

/*******************************************************************************
* Function Name  : LCD_DisplayStringLi
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值