问题描述
我目前正在使用L152C discovery板,并试图制作简单的时钟,该时钟将使用STM32和通过 CubeMX 配置的LCD HAL库的板载Glass LCD使用RTC。
但我目前遇到一个无法解决的问题:
CubeMX没有启用LCD_CR
寄存器中的段多路复用器的选项。我想启用它,因为它会使段映射更容易。
所以我想,我将直接进行寄存器操作,启用多路复用器(LCD_CR
中的第7位)。
我使用了命令LCD->CR |= LCD_CR_MUX_SEG;
,但是即使执行了命令,MUX_SEG
位仍然零。 (我在调试会话中通过命令步进和SFR内存映射进行检查)
我做错什么了吗?还是有另一种方法来更改CubeMX配置的初始化参数,但没有此设置选项的图形实现?
该应用程序正在使用FreeRTOS,我在LCD->CR |= LCD_CR_MUX_SEG;
之后执行了HAL_LCD_Init(&hlcd);
,所以我假设LCD外设时钟正在运行(并且段正在更新)。
我录制了一个简短的视频,展示了这个问题: https://youtu.be/0X6Zu5EPudU 老实说,我不擅长直接寄存器操作,所以我可能做错了事。
任何帮助将不胜感激!?
解决方法
正如@KIIV 所说:
RM0038 液晶显示控制器 (LCD) 注意:当 LCD 使能(LCD_SR 中的 ENS 位为 1)时,VSEL、MUX_SEG、BIAS 和 DUTY 位被写保护。
更改上述寄存器时必须禁用 LCD。