电子说
问题描述:
最近项目里使用了两路串口透传数据,串口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);
}
}
串口助手模拟发送:
测试结果:
不受影响。
全部0条评论
快来发表一下你的评论吧 !