【问题标题】:Cannot change value of LCD_CR register无法更改 LCD_CR 寄存器的值
【发布时间】:2021-01-21 12:40:18
【问题描述】:

我目前正在使用 L152C 探索板并尝试制作简单的时钟,该时钟将使用 STM32 内置的 RTC 和通过 CubeMX 配置的 LCD HAL 库的板载玻璃 LCD。 但我目前面临一个我无法理解的问题: CubeMX 没有在LCD_CR 寄存器中启用段复用的选项。我想启用它,因为它会使段映射更容易。

所以我想,好吧,我将直接进行寄存器操作,启用多路复用器(LCD_CR 中的第 7 位)。 我使用了命令LCD->CR |= LCD_CR_MUX_SEG; 但即使在执行命令之后,MUX_SEG 位仍然是。 (我使用命令步进和 SFR 内存映射检查了调试会话) 有什么我做错了吗?还是有其他方法可以更改 CubeMX 配置但没有此设置选项的图形实现的初始化参数?

应用程序正在使用 FreeRTOS,我在 HAL_LCD_Init(&hlcd); 之后执行了 LCD->CR |= LCD_CR_MUX_SEG;,所以我认为 LCD 外围时钟正在运行(并且段正在更新)。

我录制了一个简短的视频来展示这个问题: https://youtu.be/0X6Zu5EPudU 老实说,我不擅长直接操作寄存器,所以我可能做错了什么。

任何帮助将不胜感激!????

【问题讨论】:

  • RM0038 液晶显示控制器 (LCD) 注意:当 LCD 使能(LCD_SR 中的 ENS 位为 1)时,VSEL、MUX_SEG、BIAS 和 DUTY 位被写保护。
  • 哦,我错过了。谢谢。

标签: c arm stm32 lcd stm32cubemx


【解决方案1】:

正如@KIIV 所说:

RM0038 液晶显示控制器 (LCD) 注意:当 LCD 启用时,VSEL、MUX_SEG、BIAS 和 DUTY 位被写保护(LCD_SR 中的 ENS 位为 1)。

更改上述寄存器时必须禁用 LCD。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2016-04-07
    • 2019-12-10
    • 2020-11-04
    • 2013-03-04
    • 2013-10-21
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多