当我使用 stm32 发现板向另一个发现板发送数据时遇到一些问题,它可以获取正确的数据并在回调函数中打印,但在其他函数中无法正确打印。
void UART7_IRQHandler()
{
HAL_UART_IRQHandler(&huart7);
HAL_UART_Receive_IT(&huart7, (uint8_t *)UART7RxBuffer, 16);
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef* huart)
{
if(huart->Instance == UART7) {
X = (UART7RxBuffer[1]-48) + (UART7RxBuffer[3]-48)*0.1 + (UART7RxBuffer[4]-48)*0.01 + (UART7RxBuffer[5]-48)*0.001;
}
}
但我收到这样的错误数据
void controller(){
printf("%.3f\t\n", X);
}
它应该是 0.012,并且在 HAL_UART_RxCpltCallback() 中是正确的,我在控制器中收到 -38.02、-0.009、0.512、0.012、-1.948 等等。我该怎么做才能防止这种情况发生?