STM32开了两个串口,分别与触摸屏和上位机通信,都是用的Modbus协议,单独两两通信没有问题 ,比如说只和触摸屏通信 ,触摸屏显示的刷新的速度很快,屏上显示的重量值刷新很快,不会有卡顿现象,但是我开了上位机之后卡顿现象特别明显!我现在的程序是这样操作的!
两个串口是相同的优先级,两个串口中断里面就是接受数据:
这个是串口1中断的操作
Screen_Receive_buff[Screen_rec_counter] = USART1->DR;
Screen_rec_counter++;
串口2和串口1一样只是变量不同:
PC_Receive_buff[PC_rec_counter] = USART2->DR;
PC_rec_counter++;
而modbus的通信程序我是在主循环里面操作:
if(Screen_rec_counter>7)
{
ModBusRTU(Screen_Receive_buff,Screen_rec_counter);
}
if(PC_rec_counter>7)
{
ModBusRTU_PC(PC_Receive_buff,PC_rec_counter);
}
在主循环里面不停的轮询! 触摸屏和PC的通信我是分开写的(就是上面的两个函数)就是担心两个之间发生冲突!不过还是没有解决
数据显示卡顿应该是当其中一个在通讯时,另一个在等待造成的!这样一个是会造成数据显示卡顿现象,还有可能会使数据丢失!
请教:我现在就想怎么才能使两个通讯相互独立互不干扰! 程序结构怎么写呢?
搞了两天还是不行,只能来二姨家求助,谢谢!
|