OpenEdv-开源电子网

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

求助串口接收数据不全

[复制链接]

5

主题

23

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-3-28
在线时间
11 小时
发表于 2018-3-29 16:19:01 | 显示全部楼层 |阅读模式
7金钱
  我是通过蓝牙模块踩操作的。蓝牙模块是串口的接口。
单纯的收发是可以接收完整数据的。比如说手机发“123”,片子可以接收到“123”,并且可以发送回手机“123”;
如果加上while(1)下面的OLED显示,就只能接收第一个字符。比如手机发“123”,片子只接收“1”,并且只发送回手机“1”,OLED之显示1;
void USART1_IRQHandler(void)
        {
       
if(USART_GetITStatus(USART1,USART_IT_RXNE))//判断函数类型是否是接收中断,第二个入口函数是中断类型为接收中断
                {       
                        uint16_t res;
                        res=USART_ReceiveData(USART1);
          
                        USART_SendData(USART1,res);

         ch[0]=res;
       
        DelayInit();
        I2C_Configuration();
        OLED_Init();
       
        while(1)
        {
                OLED_Fill(0xFF);//全屏点亮
                DelayS(2);
                OLED_Fill(0x00);//全屏灭
                DelayS(2);

                DelayS(2);
                OLED_ShowStr(0,3,ch,1);//测试6*8字符
                                       
                DelayS(2);
                OLED_CLS();//清屏
                OLED_OFF();//测试OLED休眠
                DelayS(2);
                OLED_ON();//测试OLED休眠后唤醒

                DelayS(2);
        }

                }
        }

最佳答案

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

接收了第一个字节,代码就在while(1)里面死循环了,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-29 16:19:02 | 显示全部楼层
接收了第一个字节,代码就在while(1)里面死循环了,
回复

使用道具 举报

0

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2018-3-14
在线时间
19 小时
发表于 2018-3-29 16:44:50 | 显示全部楼层
你都把while放到中断里了,还怎么接收啊
回复

使用道具 举报

5

主题

23

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-3-28
在线时间
11 小时
 楼主| 发表于 2018-3-29 17:22:25 | 显示全部楼层
login_FAE 发表于 2018-3-29 17:00
接收了第一个字节,代码就在while(1)里面死循环了,

不应该是接收完成之后在到while里吗
回复

使用道具 举报

5

主题

23

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-3-28
在线时间
11 小时
 楼主| 发表于 2018-3-29 18:36:27 | 显示全部楼层
login_FAE 发表于 2018-3-29 17:00
接收了第一个字节,代码就在while(1)里面死循环了,

之前也试过把while(1)放到主函数里
回复

使用道具 举报

5

主题

23

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-3-28
在线时间
11 小时
 楼主| 发表于 2018-3-29 19:04:45 | 显示全部楼层
如果单步调试,发送“123”,也只能接受到“1”
回复

使用道具 举报

5

主题

23

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-3-28
在线时间
11 小时
 楼主| 发表于 2018-3-29 19:06:12 | 显示全部楼层
XIAOADONG 发表于 2018-3-29 19:04
如果单步调试,发送“123”,也只能接受到“1”

单步调试串口的程序,不加显示程序也只能显示1
回复

使用道具 举报

5

主题

23

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-3-28
在线时间
11 小时
 楼主| 发表于 2018-3-29 22:28:14 | 显示全部楼层
来人啊
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-3-30 08:30:26 | 显示全部楼层
这个问题前一段时间有人在论坛上提出过了,我也做了回答了;类似就是将串口接收的值给res,然后再将res首地址作为指针传给OLED显示程序。
回复

使用道具 举报

0

主题

113

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3321
金钱
3321
注册时间
2017-12-14
在线时间
406 小时
发表于 2018-3-30 09:30:58 | 显示全部楼层
建个接收缓存,收归收,显示归显示
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7643
金钱
7643
注册时间
2016-11-30
在线时间
647 小时
发表于 2018-3-30 09:32:50 | 显示全部楼层

单步调试串口会把后边字节丢掉,串口接收是每1个字节产生一次中断,你这样的逻辑肯定是有问题的,
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3567
金钱
3567
注册时间
2016-1-8
在线时间
544 小时
发表于 2018-3-30 09:34:31 | 显示全部楼层
2楼正解
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-3-30 09:58:23 | 显示全部楼层
第一次见中断里面用死循环的
回复

使用道具 举报

40

主题

250

帖子

0

精华

高级会员

Rank: 4

积分
854
金钱
854
注册时间
2016-11-13
在线时间
705 小时
发表于 2018-3-30 12:58:07 来自手机 | 显示全部楼层
HXYDJ 发表于 2018-3-30 09:58
第一次见中断里面用死循环的

活久见
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2018-2-11
在线时间
53 小时
发表于 2018-3-30 15:38:41 | 显示全部楼层
比我有才
回复

使用道具 举报

5

主题

23

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-3-28
在线时间
11 小时
 楼主| 发表于 2018-3-30 16:01:21 | 显示全部楼层
login_FAE 发表于 2018-3-29 16:19
接收了第一个字节,代码就在while(1)里面死循环了,

不用while(1),我让while做有限次数循环。是可以接收第二字节,但是也就只有到第二个字节结束。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-30 16:12:00 | 显示全部楼层
中断里面  就处理 接收的数据,然后保存到USART_RX_BUF里面   在其他地方调用字符串显示函数显示就可以的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 15:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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