if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { GPIO_ResetBits(GPIOC, GPIO_Pin_0); Res =USART_ReceiveData(USART1); USART_ClearFlag(USART1,USART_FLAG_RXNE); USART_SendData(USART1,Res); if(rec_flag==0) { // USART_SendData(USART1,rec_flag); GPIO_ResetBits(GPIOC, GPIO_Pin_1); if(USART_ReceiveData(USART1)==0xff) { GPIO_ResetBits(GPIOC, GPIO_Pin_1); rec_flag=1; // USART_SendData(USART1,rec_flag); i=0; } } else { if(USART_ReceiveData(USART1)==0xff) { rec_flag=0; // USART_SendData(USART1,rec_flag); // if(i==3) { if(buffer[0]==0x00)//ÊÖ¶¯¿ØÖÆ { GPIO_SetBits(GPIOC,GPIO_Pin_0); switch(buffer[1]) { case 0x01:GPIO_ResetBits(GPIOC, GPIO_Pin_1);break;//Ç°½ø } } } i=0; } else { buffer[i]=USART_ReceiveData(USART1); i++; } } } else { USART_ClearFlag(USART1,USART_FLAG_LBD); }
单独发送FF没有应答连中断都进不去,我在中断里设置的有指示灯
就发送00返回来00其他的都不一样,发送FE返回来FC怎么回事
USART.rar
你先调试一下,接收数据打个断点,看看接收到数据RDR寄存器寄存器的值是不是对面发送的值
然后单步调试发送程序部分,看看你往TDR寄存器写入的值是不是你要发送的数据。
然后判断问题出在哪里。
没有看到你串口配置部分的程序,配置可能存在问题。你的收发逻辑比较乱,可以选进行串口的自发自收测试。
硬件上,连接是不是可靠,是不是共地之类 的进行查找问题。
不启用后面那部分程序试试看能不能正常收到,这种情况不常见的
另外发什么数据收到会那些E0的?
发FE回FC,看看串口配置中波特率、校验位等参数是否匹配串口助手的设置。