1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
以下是串口通信主函数中接收数据的一段代码, len 这个变量是定义为U16类型。我的疑问是:(len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度)这句话中所谓数据长度是什么意思?是指二进制数据的长度吗?其长度又是怎么算出来的呢?视频讲解好像是说长度为2的13次方减1,对吗?可这是为什么呢?
while(1) { if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 printf("rn您发送的消息为:rnrn"); for(t=0;t USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束 } printf("rnrn");//插入换行 USART_RX_STA=0; }else { times++; if(times%5000==0) { printf("rn战舰STM32开发板 串口实验rn"); printf("正点原子@ALIENTEKrnrn"); } if(times%200==0)printf("请输入数据,以回车键结束n"); if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行. delay_ms(10); } } |
|
相关推荐
8个回答
|
|
USART_RX_STA低14位定义为接收数据长度,USART_RX_STA&0x3fff相当于将不表示接收数据长度的位置零,这样得到的数值就是接收数据的长度了,因为一个二进制位0或者1与上0一定是0,与上1则还是它本来的状态0或者1,至于你说的接收数据长度表示什么,len应该是一个整型的数据,len=USART_RX_STA&0x3fff;这个只是取出表示接收数据长度的位屏蔽其他位,得出的数值就是你此次接收到的数据长度,以字节为单位,比如这句执行后len = 0x0010;那么数据长度就是8字节,串口一位一位地发送,但是USART却是以字节为单位解码的,所以最终的数据长度应该是以字节为单位,不知道这么说你能理解么?
最佳答案
|
|
1 条评论
|
|
这个主要是在USART_RX_STA这个变量上,这里&0x3fff是取的USART_RX_STA的低14位。所以要看程序里对USART_RX_STA的操作。
|
|
|
|
blust 发表于 2017-8-7 16:01 USART_RX_STA在原程序中是被赋值为200的变量。 |
|
|
|
串口接收都差不多,一个一个字符接收存起来,在规定超时时间没有字符,为一包数据
|
|
|
|
建议使用空闲中断,自动断贞,不需要自己再单独处理
|
|
|
|
alecs 发表于 2017-8-11 10:21 非常感谢。我已经理解了。 |
|
|
|
不错,很好的经验分享,感谢
|
|
|
|
len=USART_RX_STA&0x3fff; len 是USART_RX_STA和0x3fff进行位与计算得到的,即len取的是USART_RX_STA的低14位数据来表示接收到的字节数。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
503 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1756 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1183 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1053 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1287 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12022 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 20:22 , Processed in 0.837971 second(s), Total 102, Slave 81 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号