2021.11.12 串口打log
main {
printf("\r\n 111111 \r\n");
HAL_UART_Transmit(&huart1, chaoTxBuffer, strlen(chaoTxBuffer), 0xffff);
HAL_UART_Transmit_IT(&huart1, chaoTxBuffer, strlen(chaoTxBuffer));
printf("\r\n 22222\r\n");
}
--------------
PUTCHAR_PROTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
printf("\r\nqyc, at HAL_UART_TxCpltCallback\r\n");
}
stm32 f4 hal, 为什么调用HAL_UART_Transmit_IT之后,重定向的printf不能连续打log了。。。
过了一会儿,加了个延时解决了
main
{
printf("\r\n qyc, at main begin \r\n");
//printf hello chao
HAL_UART_Transmit(&huart1, chaoTxBuffer, strlen(chaoTxBuffer), 0xffff);
while((HAL_UART_Transmit_IT(&huart1, chaoTxBuffer, strlen(chaoTxBuffer))) != HAL_OK);
HAL_Delay(1);
printf("\r\n 22222 \r\n");
while(1) {
//会进入
}
}
加一个HAL_Delay(10)就行了,实际没有HAL_Delay不会打印”22222“, 但是也不会阻塞会进入while。 不明觉厉啊,不支快速打印,要等待什么 ??? 什么原因 ?????
-------
那么每次调用HAL_UART_Transmit_IT之后,再调用printf(实现:HAL_UART_Transmit)打印之前,应该调用一下HAL_Delay(10)延时一下。否则可能出现,紧接着的log不会打印。