完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
最近在调试串口协议时遇到些问题,向大家请教一下。
首先通过UART1_RecvString(RxBuff)将接收到的数据存入数组RxBuff中,然后判断数组RxBuff前两位是否等于0xaa和0xc0,如果等于将RxBuff输出。调试中发现无法进行等于判断,请问大家是否遇到相似的问题。 #include "CH57x_common.h" UINT8 TxBuff[] = "This is a tx examrn"; UINT8 RxBuff; UINT8 trigB; int main() { UINT8 len; SetSysClock( CLK_SOURCE_PLL_60MHz ); /* 配置串口1:先配置IO口模式,再配置串口 */ GPIOA_SetBits( GPIO_Pin_9 ); GPIOA_ModeCfg( GPIO_Pin_8, GPIO_ModeIN_PU );// RXD-配置上拉输入 GPIOA_ModeCfg( GPIO_Pin_9, GPIO_ModeOut_PP_5mA ); // TXD-配置推挽输出,注意先让IO口输出高电平 UART1_DefInit(); while( 1 ) { len = UART1_RecvString( RxBuff ); if ( RxBuff[0]==0xaa&&RxBuff[1]==0xc0) { UART1_SendString( RxBuff, len ); } } } |
|
相关推荐
2个回答
|
|
|
您是用的查询的方式去做的串口收发,您可以在您那个条件判断前面加上printf打印看一下您的那个RxBuff是不是这两个数据(0xAA,0xC0
|
|
|
|
|
|
串口使用,对于实际项目或工程优先用中断方式,不管是及时性还是控制,对于整个项目都是优先的选择。
对于的确需要使用串口轮询方式,可以添加如下方式查看原因 在while(1)循环内,可以添加打印len的长度。 while(1) { len = UART1_RecvString( RxBuff ); if(len){ PRINT("len=%dn",len); } } PC串口工具打印如截图,UART1接收到的数据长度并不是一次性发送完成。 每次发送完成后都会对RxBuff,len重新赋值,所以if ( RxBuff[0]==0xaa&&RxBuff[1]==0xc0)不会成立 |
|
|
|
|
只有小组成员才能发言,加入小组>>
351 浏览 0 评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
863 浏览 0 评论
1461 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
3418 浏览 2 评论
2822 浏览 1 评论
安卓手机支持外接otg扩展坞 然后使用ch340+ch9329控制电脑吗
1808浏览 1评论
1462浏览 1评论
351浏览 0评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
863浏览 0评论
468浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 21:21 , Processed in 0.659242 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1136