专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
串口试验中 为什么(USART_RX_STA&0x80)==0就表示没接收完成数据
2019-10-14 23:31
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
7132
11
1103
为什么 (USART_RX_STA&0x80)==0表示接收数据未完成; if(USART_RX_STA&0x40)//接收到了0x0d,,,,这里接收到0x0d又是什么意思? 请问有相关的资料吗?
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
正点原子
1楼-- · 2019-10-15 03:00
精彩回答 2 元偷偷看……
加载中...
zhulifeng
2楼-- · 2019-10-15 07:14
因为这个资料里把USART_RX_STA当作变量用,自己设置的一个协议 如果有数据接收完 USART_RX_STA的最高位就置1
加载中...
正点原子
3楼-- · 2019-10-15 07:26
回复【楼主位】stm32007:
---------------------------------
看注释就好了.
加载中...
14884036
4楼-- · 2019-10-15 13:21
回复【楼主位】stm32007:
---------------------------------
u8 USART_RX_BUF[64]; //接收缓冲,最大64个字节.
//接收状态
//bit7,接收完成标志
//bit6,接收到0x0d
//bit5~0,接收到的有效字节数目
u8 USART_RX_STA=0; //接收状态标记
第七位,用来标记是否接收完成的标记,如果接收完成了就置1,如果没有,就是0.
第六位,用来标识是否接收到0X0D,如果收到,就置1,否则为0.
第5~0位,用来统计接收到的字符数,最大可以支持到64个字符.
USART_RX_STA&0x80取USART_RX_STA最高位也就是bit7
USART_RX_STA&0x40取次高位也就是bit6
加载中...
feel
5楼-- · 2019-10-15 14:41
回复【3楼】 正点原子 : --------------------------------- 原子哥... 我最近才学这个,关于串口部分的通讯协议我认为算是看懂了。 但是还是遇到一些问题,我在MAIN里面利用串口接受一个字符当作开光用。发现不行。
遇到几个问题总结下: 软件调试的时候 一直开着HSE那个位置进不去....百度查询不到 硬件调试的时候 串口每次发送数据过来他每次都是获取到第一个字符串,第二个那些都没有。又卡在这里,所有没法设置到通讯完毕的标志位。就没法继续了。
实验问题: 串口发送一个Q,或者是W 控制一个U8 的KK 置为Q: 1 W:0 然后在循环下面写一个IF(kk){输出}else{关闭}
实际情况很神奇,系统运行提示的LED 会受到Q 和W的影响,Q就关闭了,W就闪。 而我要控制的PB05没有任何反应。
加载中...
正点原子
6楼-- · 2019-10-15 16:27
精彩回答 2 元偷偷看……
加载中...
1
2
下一页
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
---------------------------------
看注释就好了.
---------------------------------
u8 USART_RX_BUF[64]; //接收缓冲,最大64个字节.
//接收状态
//bit7,接收完成标志
//bit6,接收到0x0d
//bit5~0,接收到的有效字节数目
u8 USART_RX_STA=0; //接收状态标记
第七位,用来标记是否接收完成的标记,如果接收完成了就置1,如果没有,就是0.
第六位,用来标识是否接收到0X0D,如果收到,就置1,否则为0.
第5~0位,用来统计接收到的字符数,最大可以支持到64个字符.
USART_RX_STA&0x80取USART_RX_STA最高位也就是bit7
USART_RX_STA&0x40取次高位也就是bit6
遇到几个问题总结下: 软件调试的时候 一直开着HSE那个位置进不去....百度查询不到 硬件调试的时候 串口每次发送数据过来他每次都是获取到第一个字符串,第二个那些都没有。又卡在这里,所有没法设置到通讯完毕的标志位。就没法继续了。
实验问题: 串口发送一个Q,或者是W 控制一个U8 的KK 置为Q: 1 W:0 然后在循环下面写一个IF(kk){输出}else{关闭}
实际情况很神奇,系统运行提示的LED 会受到Q 和W的影响,Q就关闭了,W就闪。 而我要控制的PB05没有任何反应。
一周热门 更多>