完善资料让更多小伙伴认识你,还能领取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度了,正常吗?
|
|
|
|
内部温度传感器,不怎么准的...
|
|
|
|
但是芯片确实很烫手
|
|
|
|
烫手,就要看你是不是有短路了.能到烫手这个级别,说明你的电路可能有短路了...
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1737 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1606 浏览 1 评论
1046 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
720 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1663 浏览 2 评论
1917浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
708浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
557浏览 3评论
581浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
539浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-15 20:41 , Processed in 1.291264 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号