OpenEdv-开源电子网

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

请教下上电后串口第一次接收数据问题

[复制链接]

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2022-10-17
在线时间
31 小时
发表于 2023-3-8 18:21:24 | 显示全部楼层 |阅读模式
2金钱
串口接收扫码数据,但是每次上电后第一次都读不到数据,从第二次开始能正常读取;
第一次代码能到USART2_send("SN_OK\r\n");接收长度也超过6位了


最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2023-3-8 18:21:25 | 显示全部楼层
回复

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2022-10-17
在线时间
31 小时
 楼主| 发表于 2023-3-8 21:26:41 来自手机 | 显示全部楼层
扫码枪上电的时候会随机给到一个数据,0x00
3439B03A-0B44-4D89-BBE5-862C8F9E55D0.jpeg
回复

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2023-3-9 08:41:22 | 显示全部楼层
把你的程序发出来,大家帮你研究一下
回复

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2022-10-17
在线时间
31 小时
 楼主| 发表于 2023-3-9 09:39:02 | 显示全部楼层
hzhanhai 发表于 2023-3-9 08:41
把你的程序发出来,大家帮你研究一下

PCB5.3验证程序.rar (5 MB, 下载次数: 1)
回复

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2022-10-17
在线时间
31 小时
 楼主| 发表于 2023-3-9 09:40:00 | 显示全部楼层
hzhanhai 发表于 2023-3-9 08:41
把你的程序发出来,大家帮你研究一下

只使用了串口调试扫码枪
回复

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2022-10-17
在线时间
31 小时
 楼主| 发表于 2023-3-9 11:58:08 | 显示全部楼层

我使用两根串口线接发,第一次接收就没有问题
回复

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2023-3-9 13:03:05 | 显示全部楼层
本帖最后由 hzhanhai 于 2023-3-9 13:15 编辑

第一个码应该是扫码枪上电自检,发的状态数据。如果不需要,可以不处理它。
回复

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2022-10-17
在线时间
31 小时
 楼主| 发表于 2023-3-9 13:10:59 | 显示全部楼层
hzhanhai 发表于 2023-3-9 13:03
第一个码应该是扫码枪上电自检,发的状态数据

第一个字节随机的,有时候又是两个字节,应该是扫码枪的问题,使用扫码枪前缀来触发接收协议,好像就没有这第一次读不到问题。
回复

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2022-10-17
在线时间
31 小时
 楼主| 发表于 2023-3-9 16:56:14 | 显示全部楼层
谢谢各位找到问题了,USART2_Send();这个函数里第一个字节遇到0x00就结束了,所以第一次发不出来
回复

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2022-10-17
在线时间
31 小时
 楼主| 发表于 2023-3-9 17:27:34 | 显示全部楼层
void USART2_Send(u8 *abc)
{
        u8 n=0;
  USART_ClearFlag(USART2, USART_FLAG_TC);
        while(*abc||n<=2)
        {
  n++;
        USART2->DR = *abc;
        while((USART2->SR&0x40)==0);//循环发送,直到发送完毕       
        abc++;
        }
}
改造了下发送函数,允许前两个字节为空
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 14:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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