OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6372|回复: 6

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

[复制链接]

15

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2015-10-19
在线时间
16 小时
发表于 2015-11-7 20:57:32 | 显示全部楼层 |阅读模式
5金钱
原子哥你视频上讲的串口试验,就收到什么就发送什么的实验,我想不管接收到什么都发送一个指定的数字或者字符。
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);
     }    
这样就会接收乱码全是星星,,,怎么搞的,知道吗???



最佳答案

查看完整内容[请看2#楼]

主函数里面  USART1->DR=USART_RX_BUF[t]; 改为 USART1->DR='1';
学生狗,啥也不会
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5757
金钱
5757
注册时间
2013-11-22
在线时间
1208 小时
发表于 2015-11-7 20:57:33 | 显示全部楼层
主函数里面  USART1->DR=USART_RX_BUF[t]; 改为 USART1->DR='1';
回复

使用道具 举报

9

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2015-8-16
在线时间
23 小时
发表于 2015-11-7 21:00:19 | 显示全部楼层
res是16位的吧,串口助手打开16进制显示
回复

使用道具 举报

15

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2015-10-19
在线时间
16 小时
 楼主| 发表于 2015-11-8 12:48:17 | 显示全部楼层
回复【3楼】lycreturn:
---------------------------------
 是下面的意思吗大哥,,这样的结果是接受到一个数或者字符,就一直发送1,,,而我只想让单片机接收一个字符或者数字就发送一次1(或者其他字符)
    if(USART_GetFlagStatus(USART1,USART_IT_RXNE))
    {

// res='1';
      //res = USART_ReceiveData(USART1);
        USART_SendData(USART1,'1');
     }
谢谢大哥指导了!!!
学生狗,啥也不会
回复

使用道具 举报

15

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2015-10-19
在线时间
16 小时
 楼主| 发表于 2015-11-8 12:58:51 | 显示全部楼层
回复【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');
     }
解决了,,哈哈谢谢大哥点播了!!!
学生狗,啥也不会
回复

使用道具 举报

15

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2015-10-19
在线时间
16 小时
 楼主| 发表于 2015-11-8 13:31:55 | 显示全部楼层
回复【2楼】weiwei-wit:
---------------------------------
解决了,你看看吧,哈哈,谢谢亲啦!!!!
学生狗,啥也不会
回复

使用道具 举报

15

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2015-10-19
在线时间
16 小时
 楼主| 发表于 2015-11-8 18:20:18 | 显示全部楼层
回复【2楼】weiwei-wit:
---------------------------------
大哥说的也有道理的!!!!
学生狗,啥也不会
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 15:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表