当前位置:   article > 正文

stm32串口发送字符串(HAL库版)_hal库发送字符串

hal库发送字符串
  1. uint8_t g_usart1_rx_flag = 0; /* 串口接收到数据标志 */
  2. /* 串口数据接收完成回调函数 */
  3. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  4. {
  5. if(huart->Instance == USART1)//首先判断是不是串口1
  6. {
  7. g_usart1_rx_flag = 1;//串口接受标志置为1,表示接收完成
  8. }
  9. }
  1. while(1)
  2. {
  3. if(g_usart1_rx_flag == 1)
  4. {
  5. printf("您输入的字符为:\r\n");
  6. HAL_UART_Transmit(&g_uart1_handle, (uint8_t*)g_rx_buffer, 1, 1000);
  7. //其实这里本来就是一个阻塞发送的函数,没有必要判断是否发送完成,如果使用的是IT函数才有必要判断
  8. //例如: HAL_UART_Transmit_IT(&g_uart1_handle, (uint8_t*)g_rx_buffer, 1);这个函数才有
  9. //判断的必要
  10. while(__HAL_UART_GET_FLAG(&g_uart1_handle, UART_FLAG_TC) != 1);
  11. printf("\r\n");
  12. g_usart1_rx_flag = 0;
  13. }
  14. else
  15. {
  16. delay_ms(10);
  17. }
  18. }

特别注意的就是这个:     

  while(__HAL_UART_GET_FLAG(&g_uart1_handle, UART_FLAG_TC) != 1);

当字符串从stm32发送出去以后是需要时间的。所以需要判断是不是发送完了

2: 判断接受完成了再发送,判断发送完成了再接受 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/713671
推荐阅读
相关标签
  

闽ICP备14008679号