Невозможно изменить значение регистра LCD_CR

#c #arm #stm32 #lcd #stm32cubemx

#c #arm #stm32 #жк-дисплей #stm32cubemx

Вопрос:

В настоящее время я играю с L152C Discovery board и пытаюсь создать простые часы, которые будут использовать встроенный RTC в STM32 и встроенный стеклянный ЖК-дисплей с библиотекой LCD HAL, настроенной через CubeMX. Но в настоящее время я сталкиваюсь с проблемой, с которой я не могу разобраться: в CubeMX нет возможности включить мультиплексирование сегментов в LCD_CR регистре. Я хотел бы включить его, потому что это упростило бы сопоставление сегментов.

Итак, я подумал, хорошо, я сделаю прямое манипулирование регистром, включив мультиплексирование (бит 7 в LCD_CR ). Я использовал команду LCD->CR |= LCD_CR_MUX_SEG; , но даже после выполнения команды MUX_SEG бит по-прежнему равен нулю. (Я проверил в сеансе отладки с пошаговым выполнением команд и картой памяти SFR) Есть ли что-то, что я делаю неправильно? Или есть другой способ изменить параметры инициализации, которые настроены в CubeMX, но не имеют графической реализации этой опции настроек?

Приложение использует FreeRTOS, и я выполнил LCD->CR |= LCD_CR_MUX_SEG; после HAL_LCD_Init(amp;hlcd); этого, поэтому я предполагаю, что периферийные часы ЖК-дисплея работают (и сегменты обновляются).

Я записал короткое видео, показывающее эту проблему: https://youtu.be/0X6Zu5EPudU Честно говоря, я не очень разбираюсь в прямых манипуляциях с регистрами, так что, вероятно, я делаю что-то не так.

Любая помощь будет оценена!😇

Комментарии:

1. Контроллер жидкокристаллического дисплея RM0038 (LCD) Примечание: Биты VSEL, MUX_SEG, BIAS и DUTY защищены от записи, когда ЖК-дисплей включен (бит ENS в LCD_SR равен 1).

2. О, я пропустил это. Спасибо.

Ответ №1:

Как сказал @KIIV:

Контроллер жидкокристаллического дисплея RM0038 (LCD) Примечание: Биты VSEL, MUX_SEG, BIAS и DUTY защищены от записи, когда ЖК-дисплей включен (бит ENS в LCD_SR равен 1).

ЖК-дисплей должен быть отключен при внесении изменений в вышеуказанные регистры.