完善资料让更多小伙伴认识你,还能领取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)不会成立 |
|
|
|
只有小组成员才能发言,加入小组>>
518 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2901 浏览 2 评论
2397 浏览 1 评论
866浏览 2评论
685浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
416浏览 1评论
519浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
811浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:27 , Processed in 0.962227 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号