完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void USART1_IRQHandler(void)
{ u8 res; if(USART1->SR&(1<<5))//接收到数据 { res=USART1->DR; if((USART_RX_STA&0x80)==0)//接收未完成 { if(USART_RX_STA&0x40)//接收到了0x0d { if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 else USART_RX_STA|=0x80; //接收完成了 }else //还没收到0X0D { if(res==0x0d)USART_RX_STA|=0x40; else { USART_RX_BUF[USART_RX_STA&0X3F]=res; USART_RX_STA++; if(USART_RX_STA>63)USART_RX_STA=0;//接收数据错误,重新开始接收 } } } } } 其中 if((USART_RX_STA&0x80)==0)//接收未完成 0x80是怎么来的?什么意思? |
|
相关推荐
16个回答
|
|
看USART_RX_STA的定义
|
|
|
|
u8 USART_RX_BUF[64]; //接收缓冲,最大64个字节.
//接收状态 //bit7,接收完成标志 //bit6,接收到0x0d //bit5~0,接收到的有效字节数目 u8 USART_RX_STA=0; //接收状态标记 还是不懂啊,上面那段代码中 if((USART_RX_STA&0x80)==0)//接收未完成 if(USART_RX_STA&0x40)//接收到了0x0d 这两句后面的常数都不清楚是怎么来的啊、 |
|
|
|
我懂了,可是USART_RX_STA这个自定义的状态寄存器又是怎样设计的?
bit7,接收完成标志 bit6,接收到0x0d bit5~0,接收到的有效字节数目 怎样让它实现? |
|
|
|
|
|
|
|
我知道那个就是规则,为什么你定了它就这样能实现了?这一步具体是怎样的?
|
|
|
|
|
|
|
|
|
|
|
|
规则在哪定的呢?如何让一个u8变量称为你自己定义的寄存器?
|
|
|
|
看手册.
|
|
|
|
不完全手册有说.另外USART_RX_STA上方的注释,就是规则.
|
|
|
|
就是看了之后不明白才问你的嘛。
|
|
|
|
|
|
|
|
好的,谢谢。还有哦,我用那个温度传感器测试了一下,CPU的温度居然到75度了,正常吗?
|
|
|
|
内部温度传感器,不怎么准的...
|
|
|
|
但是芯片确实很烫手
|
|
|
|
烫手,就要看你是不是有短路了.能到烫手这个级别,说明你的电路可能有短路了...
|
|
|
|
只有小组成员才能发言,加入小组>>
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
407 浏览 1 评论
262 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
230 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
602 浏览 2 评论
627 浏览 2 评论
1354浏览 9评论
35浏览 3评论
STM32CUBEMX4.22.1在main函数里面添加一行语句就死机的原因?
34浏览 3评论
36浏览 3评论
KEIL MDK为什么无法debug library中的代码?
73浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 04:10 , Processed in 0.598716 second(s), Total 63, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号