[STM32F1] STM32F103ZET6串口实验只能接受发送一次数据

[复制链接]
729|1
 楼主| 王小琪 发表于 2020-10-20 21:05 | 显示全部楼层 |阅读模式
如题,我用的是STM32CUBEMX和STM32F103ZET6进行的串口开发,想要实现的效果是复位可以用串口调试助手接收到“hello world!”当发送“0xa1”,串口调试助手可以接收到"LED1 Open!“
当发送“0xa2”,串口调试助手可以接收到"LED1 Closed!“
但是有一个小问题,只能用串口调试助手发送一次,可以接收到返回值。后面再发送就接收不到返回的值了。
  1. #define LED1_ON() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET)
  2. #define LED1_OFF() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET)
  3. #define LED2_ON() HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET)
  4. #define LED2_OFF() HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET)

  5. uint8_t Tx_str1[] = "hello world!\r\n";
  6. uint8_t Tx_str2[] = "LED1 Open!\r\n";
  7. uint8_t Tx_str3[] = "LED1 Closed!\r\n";
  8. uint8_t Rx_dat = 0;

  9. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  10. {
  11.     if(huart->Instance == USART1)
  12.     {
  13.         if(Rx_dat == 0xa1)
  14.         {
  15.             LED1_ON();                        
  16.             LED2_ON();
  17.                         
  18.             HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),10000);
  19.             LED2_OFF();
  20.             HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
  21.         }
  22.         else if(Rx_dat == 0xa2)
  23.         {
  24.             LED1_OFF();                        
  25.             LED2_ON();
  26.                
  27.             HAL_UART_Transmit(&huart1,Tx_str3,sizeof(Tx_str3),10000);
  28.             LED2_OFF();
  29.             HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
  30.         }
  31.     }
  32. }

  33. //在mian()函数中添加以下代码:
  34. LED2_ON();
  35. HAL_UART_Transmit(&huart1,Tx_str1,sizeof(Tx_str1),10000);    //向上位机发送“hello world!”
  36. LED2_OFF();
  37. HAL_UART_Receive_IT(&huart1,&Rx_dat,1);                      //启动串口1接收上位机1个字节




 楼主| 王小琪 发表于 2020-10-20 21:08 | 显示全部楼层
问题也解决了,就是加下面两句在串口发送之后,这两句好像是清除中断的操作,目前还没理解,只能死记硬背,拿来套用。
  1.             huart1.RxState = HAL_UART_STATE_READY;
  2.              __HAL_UART_FLUSH_DRREGISTER(&huart1);

打赏榜单

月落无痕 打赏了 4.00 元 2020-10-22

将心明月 打赏了 4.00 元 2020-10-22

您需要登录后才可以回帖 登录 | 注册

本版积分规则

232

主题

585

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部