首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UART通信中的超时(STM的HAL_UART_Transmit(.))

UART通信中的超时(STM的HAL_UART_Transmit(.))
EN

Stack Overflow用户
提问于 2022-11-15 17:48:50
回答 1查看 83关注 0票数 0

我正在使用STM32Cube_FW_G0_V1.5.0固件。我观察到,我总是在函数HAL_WaitOnFlagUntilTimeout中得到一个超时(函数添加在下面)。

有人有什么可以出错的建议吗?如何具体解决?

部分main.c代码:

代码语言:javascript
复制
  /* USER CODE BEGIN PV */
  uint8_t txdata[30] = "Hallo Peter \n\r";
  /* USER CODE END PV */

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

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

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_I2C1_Init();
  MX_RTC_Init();
  MX_SPI1_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();
  MX_DAC1_Init();
  /* USER CODE BEGIN 2 */

  HAL_UART_Transmit(&huart1, txdata, sizeof(txdata), 100);

在发送函数中调用的超时的HAL函数代码:

代码语言:javascript
复制
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
                                              uint32_t Tickstart, uint32_t Timeout)
{
  /* Wait until flag is set */
  while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
  {
    /* Check for the Timeout */
    if (Timeout != HAL_MAX_DELAY)
    {
      if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
      {
        /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error)
           interrupts for the interrupt process */
        ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE |
                                                USART_CR1_TXEIE_TXFNFIE));
        ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);

        huart->gState = HAL_UART_STATE_READY;
        huart->RxState = HAL_UART_STATE_READY;

        __HAL_UNLOCK(huart);

        return HAL_TIMEOUT;
      }

这是UART配置(Acconeer的数据表):

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-22 17:54:25

很可能对方没有被配置为硬件流控制,所以STM32从未看到设置了清晰的发送信号。

您可以在STM32 UART上禁用硬件流控制,或者将另一端配置为使用硬件流控制。(并确保所有RTS/CTS信号都连接。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74450098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档