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

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条回答
lycreturn
1楼-- · 2019-07-21 04:03
 精彩回答 2  元偷偷看……
weiwei-wit
2楼-- · 2019-07-21 04:50
res是16位的吧,串口助手打开16进制显示
最小谷子
3楼-- · 2019-07-21 05:32
回复【3楼】lycreturn:
---------------------------------
 是下面的意思吗大哥,,这样的结果是接受到一个数或者字符,就一直发送1,,,而我只想让单片机接收一个字符或者数字就发送一次1(或者其他字符)
    if(USART_GetFlagStatus(USART1,USART_IT_RXNE))
    {

// res='1';
      //res = USART_ReceiveData(USART1);
        USART_SendData(USART1,'1');
     }
谢谢大哥指导了!!!
最小谷子
4楼-- · 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');
     }
解决了,,哈哈谢谢大哥点播了!!!
最小谷子
5楼-- · 2019-07-21 12:49
 精彩回答 2  元偷偷看……
最小谷子
6楼-- · 2019-07-21 14:13
 精彩回答 2  元偷偷看……

一周热门 更多>