[stm32] stm32F4 hal调用HAL_UART_Transmit_IT后printf不能打印的问题

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不会打印。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值