如何解决无法更改LCD_CR寄存器的值
我目前正在使用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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。