本文主要是介绍蓝桥杯G431RBT6——定时器中使用led冲突以及led与lcd冲突等一系列问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文是解决 同时在 定时器中点灯 与 LCD屏幕显示 冲突异常的问题
我们大家都知道,G431RBT6开发板上led与lcd是冲突的,所以在lcd.c文件中的这三个函数中
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
void LCD_WriteRAM_Prepare(void)
void LCD_WriteRAM(u16 RGB_Code)
的头跟尾分别加这两句话
uint16_t temp = GPIOC->ODR;
GPIOC->ODR=temp;
就可以避免冲突。
但是,如果有定时器的参与点灯的话是否也正常呢?
答案是不行!
示例:
在这个代码中,我定义的是led灯每隔1s闪烁,但实际情况,其他灯也会闪烁,这是为什么呢?
在这段lcd的代码中,1和3在上文已经说过是防止led与lcd冲突的代码。但是增加了定时器后,情况就变了,万一代码运行到2的位置,定时器就直接中断回调函数后,是不是刚刚保存下的的temp 的值都还没有来得及赋给GPIOC->ODR。所以就会导致led异常。
解决方案:
结论:
定时器中不要执行点灯操作,只需要执行点灯标志位,在while(1)函数中执行点灯就可以避免在定时器中无法点灯的情况!
这篇关于蓝桥杯G431RBT6——定时器中使用led冲突以及led与lcd冲突等一系列问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!