OpenEdv-开源电子网

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

谁能帮忙理解一下原子串口通信接受协议不?

[复制链接]

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2019-9-8
在线时间
13 小时
发表于 2020-5-5 11:49:40 | 显示全部楼层 |阅读模式
QQ图片20200505114738.png 刚开始学习单片机,希望好心人士帮帮忙解答一下,谢谢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6745
金钱
6745
注册时间
2017-4-12
在线时间
1258 小时
发表于 2020-5-5 21:47:02 | 显示全部楼层
你直接看原子的教程讲解
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2020-3-2
在线时间
30 小时
发表于 2020-5-6 09:45:59 | 显示全部楼层
刚开始学会使用吧。别纠结原理了。
回复 支持 反对

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3884
金钱
3884
注册时间
2017-3-7
在线时间
1693 小时
发表于 2020-5-6 09:55:51 | 显示全部楼层
80 40程序下面有自己理解写,0a 0d是电脑端enter键的阿斯克码,可以搜搜了解下
回复 支持 反对

使用道具 举报

12

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1825
金钱
1825
注册时间
2017-9-7
在线时间
501 小时
发表于 2020-5-6 10:12:22 | 显示全部楼层
记得开发指南有讲这个协议,耐心找下
回复 支持 反对

使用道具 举报

0

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2018-12-27
在线时间
0 小时
发表于 2020-5-6 14:16:00 | 显示全部楼层
虽然解答不了,但还是帮顶,默默的走过
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2019-9-8
在线时间
13 小时
 楼主| 发表于 2020-5-8 10:47:08 | 显示全部楼层
谢谢各位大哥大姐
回复 支持 反对

使用道具 举报

13

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2016-5-26
在线时间
108 小时
发表于 2020-5-11 11:45:48 | 显示全部楼层
我也在看这个内容:
usart.c文件中定义了
//接收状态
//bit15,        接收完成标志
//bit14,        接收到0x0d
//bit13~0,        接收到的有效字节数目
u16 USART_RX_STA=0;       //接收状态标记

if(USART_RX_STA&0x8000)//判断  bit15没有置一,如果  接收没有完成的话

&4000     //判断  bit14,        接收到0x0d
回复 支持 反对

使用道具 举报

13

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2016-5-26
在线时间
108 小时
发表于 2020-5-11 14:28:20 | 显示全部楼层
第二遍看这个程序,发现之前都没深看。
感觉自己对这个程序的运行机制和流程,不是很懂
回复 支持 反对

使用道具 举报

29

主题

162

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1243
金钱
1243
注册时间
2018-4-25
在线时间
185 小时
发表于 2020-5-11 15:44:59 | 显示全部楼层
实际应用中都是自己写接收协议
回复 支持 反对

使用道具 举报

8

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2019-4-17
在线时间
34 小时
发表于 2020-5-12 14:51:23 | 显示全部楼层
从最内层的那个else往上看就懂了
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2019-9-8
在线时间
13 小时
 楼主| 发表于 2020-5-18 11:13:34 | 显示全部楼层
dianzixiaobai 发表于 2020-5-11 11:45
我也在看这个内容:
usart.c文件中定义了
//接收状态

谢谢大哥,你讲解的非常详细
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-4-21
在线时间
12 小时
发表于 2020-5-19 09:00:21 | 显示全部楼层
stm32不完全手册,SYSTEM文件夹介绍中的usart介绍中有说明
回复 支持 反对

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1432
金钱
1432
注册时间
2020-5-12
在线时间
393 小时
发表于 2020-5-19 10:29:17 | 显示全部楼层
你需要理解的是 USART_RX_STA&0x8000这句话是什么意思,0x8000,转换成二进制就是 0b1000 0000 0000 0000。
USART_RX_STA&0x8000,通过二进制可以看到,他只取了最高的bit,就是bit15,其他都是为0,当bit15为0, USART_RX_STA&0x8000 就为0,那这判断就是false,当bit15为1时,USART_RX_STA&0x8000 就不为0,根据非0即真原则,那这判断就是true。所以这句代码意思就是说判断bit15是否置1。
其他0x4000,原理一致。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-2 20:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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