Перейти к содержанию

Ionrika Nayanil

Members
  • Постов

    2
  • Зарегистрирован

  • Посещение

Весь контент Ionrika Nayanil

  1. USART1 проверен, особенно в части флагов включения прерываний, все верно.
  2. Доброго времени суток! Недавно была предпринята попытка разобраться с STM32L071 при поддержке STM32CubeIDE. Скрины генерации проекта прилагаю. Решено было начать с самого базового - с UART. Для теста в UART была выдана строка, которая была принята компьютером. После чего я настраиваю прием данных по UART, зная максимальный объём посылки - включаю прерывание IDLE и запускаю приём. Несмотря на очевидное наличие данных на входе контроллера (видимое с помощью осциллографа), я не получаю признак их прихода, т.е. ни прерывание IDLE, ни коллбек. В чем может быть причина? //main.c void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) { if (huart->Instance == USART1) { } } int main (void) { /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ uint8_t aTxBuffer[] = " ****UART_TwoBoards_ComIT**** "; /* 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_USART1_UART_Init() HAL_UART_Transmit(&huart1, (uint8_t*)aTxBuffer, sizeof(aTxBuffer), 1000); __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); HAL_UARTEx_ReceiveToIdle_IT(&huart1, (uint8_t*)receive_buff, 20); while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } } void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1); /* USER CODE BEGIN USART1_IRQn 1 */ if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) == SET) { __HAL_UART_CLEAR_IDLEFLAG(&huart1); HAL_UARTEx_ReceiveToIdle_IT(&huart1, (uint8_t*)receive_buff, 20); } /* USER CODE END USART1_IRQn 1 */ }
×
×
  • Создать...