|

楼主 |
发表于 2023-10-18 10:13:48
|
显示全部楼层
您好,串口接收是使用的hal_uart_receive函数,因为imu可以不停的发送数据,然后每次接收的数据为67字节,在任务中只使用了串口的接收和发送。下边是线程的代码
void IMU_TASK(void const * argument)
{
for(;;)
{
IMUData imu_data;
HAL_UART_Receive(&huart5,IMU_Rx,sizeof(IMU_Rx),1000);
// if(HAL_UART_Receive(&huart5,IMU_Rx,sizeof(IMU_Rx),1000) == HAL_OK){
// ttt = 3;
// }else if (HAL_UART_Receive(&huart5,IMU_Rx,sizeof(IMU_Rx),1000) == HAL_BUSY){
// ttt = 5 ;
// }else if (HAL_UART_Receive(&huart5,IMU_Rx,sizeof(IMU_Rx),1000) == HAL_ERROR){
// ttt = 7 ;
// }else if (HAL_UART_Receive(&huart5,IMU_Rx,sizeof(IMU_Rx),1000) == HAL_TIMEOUT){
// ttt = 9 ;
// }else{
// ttt = -1 ;
// }
parseAndStoreIMUData(IMU_Rx, &imu_data);
if((IMU_Rx[0] == 0x59) && (IMU_Rx[1] == 0x53)) {
HAL_UART_Transmit(&huart2, (uint8_t *)&imu_data, sizeof(IMUData), HAL_MAX_DELAY);
}
osDelay(1);
}
/* USER CODE END IMU_TASK */
}
|
|