|
@@ -19,6 +19,7 @@
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
/* Includes ------------------------------------------------------------------*/
|
|
|
#include "main.h"
|
|
#include "main.h"
|
|
|
#include "cmsis_os.h"
|
|
#include "cmsis_os.h"
|
|
|
|
|
+#include "string.h"
|
|
|
|
|
|
|
|
/* Private includes ----------------------------------------------------------*/
|
|
/* Private includes ----------------------------------------------------------*/
|
|
|
/* USER CODE BEGIN Includes */
|
|
/* USER CODE BEGIN Includes */
|
|
@@ -372,6 +373,8 @@ static void MX_GPIO_Init(void)
|
|
|
/* USER CODE END Header_StartDefaultTask */
|
|
/* USER CODE END Header_StartDefaultTask */
|
|
|
// 全局变量用于存储接收的数据和状态
|
|
// 全局变量用于存储接收的数据和状态
|
|
|
uint8_t rx_buffer;
|
|
uint8_t rx_buffer;
|
|
|
|
|
+uint8_t total[50] = {'\0'} ;
|
|
|
|
|
+uint8_t rx_index = 0;
|
|
|
uint8_t rx_complete_flag = 0;
|
|
uint8_t rx_complete_flag = 0;
|
|
|
|
|
|
|
|
// 串口中断回调函数
|
|
// 串口中断回调函数
|
|
@@ -381,7 +384,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
|
|
{
|
|
{
|
|
|
// 接收完成,设置标志位
|
|
// 接收完成,设置标志位
|
|
|
rx_complete_flag = 1;
|
|
rx_complete_flag = 1;
|
|
|
-
|
|
|
|
|
|
|
+ total[rx_index++] = rx_buffer;
|
|
|
// 重新开启中断接收,准备接收下一个字节
|
|
// 重新开启中断接收,准备接收下一个字节
|
|
|
HAL_UART_Receive_IT(&huart2, &rx_buffer, 1);
|
|
HAL_UART_Receive_IT(&huart2, &rx_buffer, 1);
|
|
|
}
|
|
}
|
|
@@ -390,18 +393,18 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
|
|
void StartDefaultTask(void *argument)
|
|
void StartDefaultTask(void *argument)
|
|
|
{
|
|
{
|
|
|
/* USER CODE BEGIN 5 */
|
|
/* USER CODE BEGIN 5 */
|
|
|
- // 初始化时开启中断接收
|
|
|
|
|
|
|
+ // 初始化时开启中断接收,接收10字节
|
|
|
HAL_UART_Receive_IT(&huart2, &rx_buffer, 1);
|
|
HAL_UART_Receive_IT(&huart2, &rx_buffer, 1);
|
|
|
|
|
|
|
|
/* Infinite loop */
|
|
/* Infinite loop */
|
|
|
for(;;)
|
|
for(;;)
|
|
|
{
|
|
{
|
|
|
- // 发送字符串到UART2
|
|
|
|
|
|
|
+ // 用 printf 输出(printf 已经重定向到 USART2)
|
|
|
printf("hello world task 1\r\n");
|
|
printf("hello world task 1\r\n");
|
|
|
|
|
|
|
|
- // 发送一个换行符(0x0a)到UART2
|
|
|
|
|
- uint8_t c = 0x0a;
|
|
|
|
|
- HAL_UART_Transmit(&huart2, &c, 1, HAL_MAX_DELAY);
|
|
|
|
|
|
|
+ // 发送一个字符串到UART2
|
|
|
|
|
+ const char *msg = "12345hhl7890";
|
|
|
|
|
+ HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY);
|
|
|
|
|
|
|
|
// 检查是否有数据接收完成
|
|
// 检查是否有数据接收完成
|
|
|
if (rx_complete_flag)
|
|
if (rx_complete_flag)
|
|
@@ -409,10 +412,23 @@ void StartDefaultTask(void *argument)
|
|
|
// 清除标志位
|
|
// 清除标志位
|
|
|
rx_complete_flag = 0;
|
|
rx_complete_flag = 0;
|
|
|
|
|
|
|
|
- // 处理接收到的数据
|
|
|
|
|
- printf("Received data: %02x\r\n", rx_buffer);
|
|
|
|
|
|
|
+ // 打印接收到的数据(以字符串形式)
|
|
|
|
|
+ // rx_buffer[13] = '\0'; // 确保结尾安全
|
|
|
|
|
+ // printf("Received data: %s\r\n", rx_buffer);
|
|
|
|
|
+
|
|
|
|
|
+ // 或者打印为 hex
|
|
|
|
|
+ /*
|
|
|
|
|
+ for (int i = 0; i < sizeof(rx_buffer); i++) {
|
|
|
|
|
+ printf("%02x ", rx_buffer[i]);
|
|
|
|
|
+ }
|
|
|
|
|
+ printf("\r\n");
|
|
|
|
|
+ */
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ printf("Received data: %s\r\n", total);
|
|
|
|
|
+ osDelay(500);
|
|
|
|
|
+ memset(total, '\0', 50);
|
|
|
|
|
+ rx_index = 0;
|
|
|
|
|
+ printf("111");
|
|
|
// 延时1秒
|
|
// 延时1秒
|
|
|
osDelay(1000);
|
|
osDelay(1000);
|
|
|
}
|
|
}
|