本帖最后由 Dylan疾风闪电 于 2014-11-28 15:45 编辑 同意楼上意见。是全局变量volatile uint8_t RS232_RX_CNT使用错误引起的乱序。主循环和中断函数交错赋值,导致RS232_RX_CNT与实际的接收字节量不符。 --------------------------------------------------------- 如果你非要这么玩,可以在发送函数RS232_Send(...)以及变量赋值后加延时,以等待接收中断完全接收完数据。(个人觉得没啥意思)--------------------------------------------------------- 引用你的代码: while(1) { if(RS485_RX_CNT>0) { RS232_Send((uint8_t *)RS485_RX_BUF,RS485_RX_CNT); RS485_RX_CNT=0; delay(); } if(RS232_RX_CNT>0)/*232接收缓冲区里有数据*/ { /*去掉延时就不能正常工作,原因不明。 单帧的数据量越大需要越大的演延时。*/ delay(); RS485_Send((uint8_t *)RS232_RX_BUF,RS232_RX_CNT);/*485发送*/ RS232_RX_CNT=0; } }
所在话题
参与活动
-
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
网络 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16 -
滴滴押注社区团购,明确“投入不设上限,要做市场第一”
线下 2020-10-16