新手上路
- 积分
- 30
- 金钱
- 30
- 注册时间
- 2016-7-1
- 在线时间
- 3 小时
|
2金钱
写了一个串口程序,串口1接收上位机的命令指令,然后再通过单片机串口2传给外部模块,外部模块再通过串口2返回数据,返回的数据通过串口1给上位机。上位机传送的数据包括指令和非指令,当给予指令时,外部模块传回相应的指令反馈,当为非指令时,将输入原封不动地传回。出现的问题是,中间传递模块和外部模块在电脑上通讯都没有问题,已连接到一起就存在问题。返回的数据总是3个字节,当超过3个字节时,后面的覆盖前面的内容。例如:发送Get(非指令)给单片机,单片机传送给外部模块,外部模块传送回的是Get,但是如果是Getand,就只会显示Gnd,三个字节。接收程序如下。
void USART2_IRQHandler(void)
{
u8 Res1;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
Res1 =USART_ReceiveData(USART2);//(USART1->DR);
USART_SendData(USART1,Res1);
// delay_us(5);
// Data3[pointer3]=Res;
// pointer3++;
// TIM5->CNT=0x00;
// TIM_Cmd(TIM5, ENABLE);
// LED1_ON(); ///////////oìμÆ
// LED2_OFF();
}
}
|
最佳答案
查看完整内容[请看2#楼]
各位已经发现问题所在了,同时开了2个定时器,可能是芯片处理速度不行,造成的,现在关掉一个,已经不出现了。
|