Explorar el Código

将A2 A3用一根线短接。会返回0A。拔掉测试,接受错误。完成uart2的接收工作

xuxinyi hace 3 meses
padre
commit
72a313cdc4
Se han modificado 1 ficheros con 34 adiciones y 2 borrados
  1. 34 2
      Core/Src/main.c

+ 34 - 2
Core/Src/main.c

@@ -373,10 +373,42 @@ static void MX_GPIO_Init(void)
 void StartDefaultTask(void *argument)
 {
   /* USER CODE BEGIN 5 */
+  uint8_t rx_data;          // 用于存储接收的数据
+  HAL_StatusTypeDef rx_status;  // 用于存储接收操作的状态
+
   /* Infinite loop */
   for(;;)
   {
+    // 发送字符串到UART2
     printf("hello world task 1\r\n");
+
+    // 发送一个换行符(0x0a)到UART2
+    uint8_t c = 0x0a;
+    HAL_UART_Transmit(&huart2, &c, 1, HAL_MAX_DELAY);
+
+    // 从UART2接收一个字节,超时时间设置为100ms
+    rx_status = HAL_UART_Receive(&huart2, &rx_data, 1, 100);
+
+    // 检查接收状态并处理
+    if (rx_status == HAL_OK)
+    {
+      // 接收成功,可以在这里处理接收到的数据
+      // 例如: 回显接收到的数据
+      // HAL_UART_Transmit(&huart2, &rx_data, 1, HAL_MAX_DELAY);
+      printf("rx_status = %02x\r\n",rx_data);
+    }
+    else if (rx_status == HAL_TIMEOUT)
+    {
+      // 接收超时,可以根据需要处理
+      printf("UART receive timeout\r\n");
+    }
+    else
+    {
+      // 其他错误情况
+      printf("UART receive error\r\n");
+    }
+
+    // 延时1秒
     osDelay(1000);
   }
   /* USER CODE END 5 */
@@ -396,7 +428,7 @@ void StartTask02(void *argument)
   for(;;)
   {
     printf("hello world task 2\r\n");
-    osDelay(1000);
+    osDelay(10000000);
   }
   /* USER CODE END StartTask02 */
 }
@@ -415,7 +447,7 @@ void StartTask03(void *argument)
   for(;;)
   {
     printf("hello world task 3\r\n");
-    osDelay(1000);
+    osDelay(1000000);
   }
   /* USER CODE END StartTask03 */
 }