完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
u8 USART_RX_BUF[128]; //接收缓冲,最大64个字节.
u16 USART_RX_STA=0; //接收状态标记 void USART1_IRQHandler(void) { u8 res; if(USART1->SR&(1<<5))//接收到数据 { res=USART1->DR; if((USART_RX_STA&0x800)==0)//接收未完成 { if(USART_RX_STA&0x400)//接收到了0x0d { if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 else USART_RX_STA|=0x800; //接收完成了 }else //还没收到0X0D { if(res==0x0d)USART_RX_STA|=0x400; else { USART_RX_BUF[USART_RX_STA&0X6F]=res;//原来是USART_RX_BUF[USART_RX_STA&0X3F]=res 其中3F就是64位数据理 USART_RX_STA++; if(USART_RX_STA>128)USART_RX_STA=0;//接收数据错误,重新开始接收 } } } } } 串口H,C文件里面都改了,包括算法也搞明白了,怎么改就是64个 刚玩ARM 实在搞不懂 |
|
相关推荐
6个回答
|
|
报什么错?
|
|
|
|
不报错, 收到数据就显示64位以后的一两位
|
|
|
|
我把u16 USART_RX_STA=0;定义成 16位的,把标志位后移两位 这样不是位数就可以加多了, 原来8位时只能 到0x3f 0x40与0x80是 ODOA的确认
|
|
|
|
不能光修改usart_rx_sta的类型.
相应的代码也要进行修改. if(USART1->SR&(1<<5))//接收到数据 { res=USART1->DR; if((USART_RX_STA&0x8000)==0)//接收未完成 { if(USART_RX_STA&0x4000)//接收到了0x0d { if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 else USART_RX_STA|=0x8000;//接收完成了 }else //还没收到0X0D { if(res==0x0d)USART_RX_STA|=0x4000; else { USART_RX_BUF[USART_RX_STA&0X3FFF]=res; USART_RX_STA++; if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收 } } } } |
|
|
|
u8 USART_RX_BUF[250]; //接收缓冲,最大64个字节.
u16 USART_RX_STA=0; //接收状态标记 void USART1_IRQHandler(void) { u8 res; if(USART1->SR&(1<<5))//接收到数据 { res=USART1->DR; if((USART_RX_STA&0x8000)==0)//接收未完成 { if(USART_RX_STA&0x4000)//接收到了0x0d { if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 else USART_RX_STA|=0x8000;//接收完成了 }else //还没收到0X0D { if(res==0x0d)USART_RX_STA|=0x4000; else { USART_RX_BUF[USART_RX_STA&0X3fff]=res; USART_RX_STA++; if(USART_RX_STA>1000)USART_RX_STA=0;//接收数据错误,重新开始接收 } } } } } H文件 extern u8 USART_RX_BUF[250]; //接收缓冲,最大63个字节.末字节为换行符 extern u16 USART_RX_STA; //接收状态标记 主程序主要发送部分 u16 t; u16 len; if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 printf("n您发送的消息为:n"); for(t=0;t USART1->DR=USART_RX_BUF[t]; while((USART1->SR&0x40)==0);//等待发送结束 } printf("nn");//插入换行 USART_RX_STA=0; 都改完了,最多收到前面70个数据,原子老师能否帮我看下问题在哪 |
|
|
|
上传你的整个工程看看.
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1865浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
648浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
517浏览 3评论
534浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 13:29 , Processed in 0.808491 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号