STM Урок 73. HAL. LTDC. EmWin. Подключение библиотеки. Часть 3



 

Урок 73

 

Часть 3

 

HAL. LTDC. EmWin. Подключение библиотеки

 

В предыдущей части занятия мы произвели конфигурирование ряда библиотечных настроек, а также добавили некоторые функции для работы библиотеки emWin с дисплеем.

 

Добавим в конце файла ещё одну функцию-обработчик — HAL_LTDC_LineEvenCallback, которая вызывается в случае, когда происходит прерывание от линии LTDC, сигнализирующее о конце кадра. Мы обработаем данное прерывание, чтобы переключить буферы в случае использования нескольких

 

//----------------------------------------------------------------------------

void HAL_LTDC_LineEvenCallback(LTDC_HandleTypeDef *hltdc) {

  U32 Addr;

  if (pending_buffer >= 0) {

    Addr = FRAME_BUFFER_ADDRESS + XSIZE_PHYS * YSIZE_PHYS * pending_buffer * (LCD_GetBitsPerPixel() >> 3);

    __HAL_LTDC_LAYER(hltdc, 0)->CFBAR = Addr;

    __HAL_LTDC_RELOAD_CONFIG(hltdc);

    GUI_MULTIBUF_Confirm(pending_buffer);

    pending_buffer = -1;

  }

HAL_LTDC_ProgramLineEvent(hltdc, 0); //Define the position of the line interrupt

}

//----------------------------------------------------------------------------

 

 

Также надо не забыть подключить одну интересную переменную. Обычный графический режим будет работать и без этого, но когда будем применять оконный менеджер, то без этого нормальной работы кода библиотеки мы не дождёмся. Для этого зайдём в файл stm32f7xx_it.c, подключим там библиотеку, а также нашу переменную из библиотеки

 

/* USER CODE BEGIN 0 */

#include "GUI.h"

volatile GUI_TIMER_TIME OS_TimeMS;

/* USER CODE END 0 */

 

Затем в обработчик событий системного таймера в этом же файле добавим увеличение данной переменной на 1 (инкрементирование)

 

void SysTick_Handler(void)

{

  /* USER CODE BEGIN SysTick_IRQn 0 */

 

  /* USER CODE END SysTick_IRQn 0 */

  HAL_IncTick();

  HAL_SYSTICK_IRQHandler();

  /* USER CODE BEGIN SysTick_IRQn 1 */

  OS_TimeMS++;

  /* USER CODE END SysTick_IRQn 1 */

}

 

 

Теперь можем собрать код, запустить его, тем самым и проверить работу библиотеки

 

image21

 

Судя по окрашиванию экрана в тёмно-синий цвет, мы можем сделать заключение, что библиотека нормально инициализировалась.

Также ещё для пущей уверенности давайте выведем какой-нибудь текст на экран дисплея, добавив соответствующий код в функции main()

 

  Error_Handler();

}

GUI_SetFont(&GUI_Font32B_1);

GUI_SetTextAlign(GUI_TA_CENTER);

GUI_SetColor(GUI_ORANGE);

GUI_DispStringAt("Hello STemWin!!!", 240, 120);

/* USER CODE END 2 */

 

Соберём код, запустим его на выполнение. После этого мы должны увидеть следующую картину

 

image22

 

Я думаю, на сегодняшний нам хватит и этого для общего знакомства, подключения и настройки такой сложной библиотеки, как emWin.

Надеюсь, что мы ещё не раз вернёмся к этой теме и будут более серьёзные уроки по данной библиотеке. Мы рассмотрим преимущество мультибуферного вывода информации на экран, поработаем с оконным менедженром, с различными элементами управления и виджетами, а также поработаем с различными изображениями. Причём, это уже будет скоро. Так что ждите.

Спасибо за внимание!

 

 

Предыдущая часть Программирование МК STM32 Следующий урок

 

Исходный код

 

 

Отладочную плату можно приобрести здесь 32F746G-DISCOVERY

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

STM HAL. LTDC. EmWin. Подключение библиотеки

3 комментария на “STM Урок 73. HAL. LTDC. EmWin. Подключение библиотеки. Часть 3
  1. Костя:

    Добрый вечер, а с DSI будут уроки?

  2. Здравствуйте!
    Мне очень нравятся Ваши уроки. Тоже хотел бы спросить по поводу уроков с DSI. Вы обещали, но по-видимому, из-за требований др. «перейти к более народным контроллерам и платам» и всяких нажимов отменили эту тему. По-моему — зря.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*