用的stm32f103rct6 使能了串口4以及串口4的中断(没有DMA) 在main函数中调用 MX_UART4_Init(); 后可以正常使用串口的中断函数: 接收 HAL_UART_Receive_IT 发送 HAL_UART_Transmit_IT 但是想要前后发送两条语句时,后面的信息不能正常发送… 大概就是这样。 在主程序中调用 HAL_UART_Transmit_IT(&huart4, "helloworld\r\n", strlen("helloworld\r\n")); HAL_UART_Transmit_IT(&huart4, "helloworld2\r\n", strlen("helloworld2\r\n")); 则串口智能收到第一条字符串 还有如果在主while(1)循环中使用printf后串口接收中断就进不去了,调试时程序也没有跑飞。 以上 |
if((tmp_state == HAL_UART_STATE_READY) || (tmp_state == HAL_UART_STATE_BUSY_RX))
{
xxxx;
}
else
{
return HAL_BUSY;
}
如果一定要发送两个字符串
一种方法是将二者合并为一个字符串
另外可以按照以下:
uart_state_0 = HAL_UART_Transmit_IT(&huart4, "helloworld\r\n", strlen("helloworld\r\n"));
while(HAL_UART_Transmit_IT(&huart4, "helloworld2\r\n", strlen("helloworld2\r\n")));
当然是比较不推荐的方法,这样第二条会一直阻塞直到第一条发送结束。