STM Урок 14. HAL. USART. Прием данных

 

 

 

 

Урок 14

 

HAL. USART. Прием данных

 

 

На прошлом занятии мы разобрались с технологией передачи данных по интерфейсу USART, попробовали это на практике.

Во-первых, нужно обрабатывать прерывание от USART, вы ведь не угадаем, когда именно нам принимать.

Во-вторых, где-то и как-то это надо отображать.

Вот тут-то на помощь нам приходит наш добрый и старый дисплей 20х4.

Подключим его по той же 4-битной схеме (нажмите на картинку для увеличения изображения)

 

image00_0500

 

В связи с этим новый проект USART_RECEIVE мы создадим из другого проекта — MYLCD80

Запускаем вновь созданный проект в CUBE, включаем аналогичным образом USART2 – Asynchronous.

Те же самые настройки. как и в проекте с передачей данных должны быть и в Configuration.

Только единственная разница, в USART в Configuration на USART2 включим прерывания

 

image01

 

Генерируем проект. Открываем его.

Добавляем файл lcd.c.

Собираем, прошиваем, смотрим, чтобы убедиться, что дисплей у нас работает.

Если дисплей работает, то мы работаем с кодом.

По дисплею оставляем в коде только это

 

/* USER CODE BEGIN 2 */

        LCD_ini();

  sprintf(str, "Stm32F407VG");

        LCD_String(str);

        LCD_SetPos(10, 2);

  sprintf(str, "ARM mc");

        LCD_String(str);

  /* USER CODE END 2 */

 

Остальное убираем, из бесконечного цикла также всё убираем, и уберем переменную i.

 

 

Добавим код в main()

 

  /* USER CODE BEGIN WHILE */

        str[8]=0;

        HAL_UART_Receive_IT(&huart2,(uint8_t*) str,8);

  while (1)

  {

                HAL_Delay(100);

                if(huart2.RxXferCount==0)

                {

                        LCD_SetPos(0, 3);

                        LCD_String(str);

                        str[8]=0;

                        HAL_UART_Receive_IT(&huart2,(uint8_t*) str,8);

                }

  /* USER CODE END WHILE */

 

Собираем, прошиваем, смотрим.

С терминальной программы пытаемся вводить символы (обязательно ровно по 8, ну, либо по-другому, но пока не наберется 8, на дисплей ничего не выведется)

 

image02

 

В будущих проектах мы обязательно вернемся к режиму приёма данных по USART с использованием прерываний, правда не очень скоро, но вернёмся.

 

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

 

 

Исходный код

 

 

Терминальная программа

 

STM32F4-DISCOVERY

Переходник USB-TTL лучше купить такой (сейчас у меня именно такой и он мне больше нравится)

 

 

Смотреть ВИДЕОУРОК

 

STM32 HAL. USART. Передача данных

Один комментарий на “STM Урок 14. HAL. USART. Прием данных
  1. Юриц:

    Можете показать пример как определять размер сообщеия автоматичемкт? 

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

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

*