Top.Mail.Ru
Уведомления
Очистить все

[Решено] Проблема с UART в связке с DMA

stm32fan
(@stm32fan)
Active Member

Доброго всем дня )

Не могу запустить UART в связке с DMA на STM32F103RB... Сейчас уже упростил максимально проект для тестов, но все равно не работает:

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  MX_DMA_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    HAL_UART_Transmit_DMA(&huart2, myBuffer, 64);
    HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

То есть вся работа программы в том, чтобы раз в секунду отправить 64 байта из массива. Проверяю осциллографом на ножке USART2_TX (PA2). Данные не высылаются...

Что может быть не так в таком простом проекте?

Цитата
Topic starter Размещено : 02.11.2021 10:59
Тэги темы
Aveal
(@aveal)
Illustrious Member Admin

Добрый день ) это из CubeMx код, без изменений?

ОтветитьЦитата
Размещено : 02.11.2021 15:07
stm32fan
(@stm32fan)
Active Member

Благодарю за ответ! Да, только это добавил:

HAL_UART_Transmit_DMA(&huart2, myBuffer, 64);
HAL_Delay(1000);
ОтветитьЦитата
Topic starter Размещено : 02.11.2021 15:50
Aveal
(@aveal)
Illustrious Member Admin

Видимо баг CubeMx, хотя в текущей версии уже исправлено. Вызовы MX_USART2_UART_Init() и MX_DMA_Init() перепутаны местами. MX_DMA_Init() должна вызываться перед инициализацией периферии, в данном случае USART2:

/* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */
Нравится: 1
ОтветитьЦитата
Размещено : 02.11.2021 17:35
stm32fan
(@stm32fan)
Active Member

@aveal Большущее спасибо Вам, поменял местами и заработало все! Только после перегенерации приходится каждый раз менять снова )

ОтветитьЦитата
Topic starter Размещено : 02.11.2021 22:52
Aveal
(@aveal)
Illustrious Member Admin

@stm32fan А CubeMx последний?

ОтветитьЦитата
Размещено : 03.11.2021 12:23
stm32fan
(@stm32fan)
Active Member
От: @aveal

@stm32fan А CubeMx последний?

Очень старая была версия...)) Обновил, генерируется правильно, спасибо еще раз

 

ОтветитьЦитата
Topic starter Размещено : 03.11.2021 13:24
Поделиться: