- 问题描述:
由于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
订阅专栏 解锁全文
9284





