请求帮助,,又回来了,,,

2019-07-21 01:04发布

原子哥你视频上讲的串口试验,就收到什么就发送什么的实验,我想不管接收到什么都发送一个指定的数字或者字符。
void USART1_IRQHandler(void)
{
        int res;
  
        if(USART_GetFlagStatus(USART1,USART_IT_RXNE))
            {
                  res = USART_ReceiveData(USART1);
                  USART_SendData(USART1,res);
     }    
}

按照你的这个程序没问题,接收到什么就发送什么。但是我想发送一个1,就是不管接收什么我都发送一个1(其他字符也行比如OK什么的)
我修改的程序如下(其他的程序没动,只要换上你的语句就通信正常)我错在了那里??
  if(USART_GetFlagStatus(USART1,USART_IT_RXNE))
            {
                    u8 res=1;

                    USART_SendData(USART1,res);
     }    
这样就会接收乱码全是星星,,,怎么搞的,知道吗???



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
最小谷子
2019-07-21 11:01
回复【3楼】lycreturn:
---------------------------------
哈哈我整明白了为什么收到数据或字符以后一直发送1了,,因为接收到以后,接收的字符一直存储在接收的地方这样导致RXNE一直是1,,所以一直执行发送1,,,我就新整了个变量,,ans(随便设的)如下:
u8 ans;
    if(USART_GetFlagStatus(USART1,USART_IT_RXNE))
    {

// res='1';
      ans = USART_ReceiveData(USART1);
        USART_SendData(USART1,'1');
     }
解决了,,哈哈谢谢大哥点播了!!!

一周热门 更多>