问题描述:
最近项目里使用了两路串口透传数据,串口3中断接收数据,组包后通过串口1阻塞发送出去。组完包的数据近800个字符,哼唧狗使用HAL_UART_Transmit()函数进行发送,理论和实际验证发送完一包数据115200波特率下需要耗时近70ms。
哼唧狗一直有个疑问,在串口1发送的70ms内,串口3的中断接收会不会受影响呢?
这个疑问困扰了自己好几天了,由于自己对串口理解不深,今晚实在忍不住就去芯片之家群里问大牛们去了。
得到的一个大神回复是这样的:
** 下面是测试过程分享。**
串口1阻塞发送800个字符,然后串口3中断接收,每次接收到一个字符变量加1,并在串口中断回调函数内打印该变量值。通过串口助手给串口3发送数据,每次发送一个字符。看发送过程中是否会受影响。
main函数中:
while (1)
{
//800个字符 理论串口发送70ms
sprintf(buf,"%s","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn");
while(1)
{
HAL_UART_Transmit(&huart1, (uint8_t *)buf, strlen(buf),1000);
//加一个指示灯翻转
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
}
}
串口1中断回调函数:
int conut = 0;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart == &huart3)
{
conut = conut + 1;
printf("conut = %d n ",conut);
HAL_UART_Receive_IT(&huart3, (uint8_t *)Rx2478Tmp, RxDataTmp);
}
}
串口助手模拟发送:
测试结果:
不受影响。
-
接收机
+关注
关注
9文章
1224浏览量
54722 -
回调函数
+关注
关注
0文章
89浏览量
11918 -
串口中断
+关注
关注
0文章
67浏览量
14368 -
Uart串口
+关注
关注
0文章
29浏览量
7166 -
HAL库
+关注
关注
1文章
121浏览量
7002
发布评论请先 登录
HAL_UART_Receive_IT,HAL_UART_Transmit不能正常接收数据的原因?
STM32G030F6用串口中断函数接收数据,发送数据就死机怎么解决?
z2:采用STM32cubeMX来配置串口接收中断
cubemx配置的串口中断发送HAL_UART_Transmit_IT不行
请问怎么用HAL_UART_Transmit发送数值型数据?
HAL_UART_Receive_IT和HAL_UART_Transmit一起用进不到中断里
HAL_UART_Transmit函数底层实现过程
如果TX未完成时RX,HAL_UART_Transmit() 和 HAL_UART_Receive_IT() 失败怎么处理?
如何在使用HAL_UART_Transmit_IT时仅处理UART RX中断事件?
HAL_UART_Transmit_IT阻塞如何立即返回?
STM32使用CubeMAX配置的串口中断接收方法

【STM32 HAL】UART串口通讯

STM32 HAL库 UART 串口读写功能笔记

HAL_UART_Transmit函数底层实现

评论