完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
STM32在做串口实验收到数据后原样发出去时,接收数据不正常,如果接收到的数据有00时,会多一个00发出,如果接收到的数据没有00,收发正常,举例我发送01 03 00 32 00 03 A4 04, 接收到的却是01 03 00 00 32 00 00 03 A4 04,如果没有00就全部正常,没有用中断,采用的查询方式,下面附代码
GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB| RCC_APB2Periph_USART1 ,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO ,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOAtiNG; GPIO_Init(GPIOA,&GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 9600;//²¨ÌØÂÊ USART_InitStructure.USART_WordLength = USART_WordLength_9b;//×Ö³¤8λ USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_Even ;//USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1,&USART_InitStructure); USART_Cmd(USART1,ENABLE); USART1_485_Receive_EN(); } USART1_485_Receive_EN(); if (USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET) { if(1) { Uart1RevBuf[rx_index] = USART_ReceiveData(USART1); rx_index ++; if(rx_index >=UART1_RSBUF_LEN) rx_index = 0; USART_ClearFlag(USART1,USART_IT_RXNE); } } Uart1SentBuf[0]= Uart1RevBuf[0]; Uart1SentBuf[1]= Uart1RevBuf[1]; Uart1SentBuf[2]= Uart1RevBuf[2]; Uart1SentBuf[3]= Uart1RevBuf[3]; Uart1SentBuf[4]= Uart1RevBuf[4]; Uart1SentBuf[5]= Uart1RevBuf[5]; Uart1SentBuf[6]= Uart1RevBuf[6]; Uart1SentBuf[7]= Uart1RevBuf[7]; Uart1SentBuf[8]= Uart1RevBuf[8]; Uart1SentBuf[9]= Uart1RevBuf[9]; Uart1SentBuf[10]= Uart1RevBuf[10]; Uart1SentBuf[11]= Uart1RevBuf[11]; Uart1SentBuf[12]= Uart1RevBuf[12]; Uart1SentBuf[13]= Uart1RevBuf[13]; Uart1SentBuf[14]= Uart1RevBuf[14]; Uart1SentBuf[15]= Uart1RevBuf[15]; USART_ClearFlag(USART1,USART_FLAG_TC); USART_SendData(USART1,Uart1SentBuf); |
|
相关推荐
5个回答
|
|
|
初始化有问题,改成8位,无奇偶校验
最佳答案
|
|
|
|
|
|
发送端和接收端的串口设置是一样吗?
看了你的配置,数据位是9位,停止位是1位,这是你的接收设置;发送那边的设备或者PC也必须是这个设置才行,否则就会有问题。 USART_InitStructure.USART_WordLength = USART_WordLength_9b;//×Ö³¤8λ USART_InitStructure.USART_StopBits = USART_StopBits_1; ---------就是这2个设置。 |
|
|
|
|
|
USART_InitStructure.USART_WordLength = USART_WordLength_9b; 这里的9改成8应该就可以了
|
|
|
|
|
|
USART_InitStructure.USART_WordLength = USART_WordLength_9b; 这里的9改成8应该就可以了
|
|
|
|
|
hyf_wz 发表于 2018-4-9 08:00 数据位应该是9位,8位数据加一位奇偶校验位 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
693 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
681 浏览 0 评论
有人有STM8H1K08T连接TM1650的源码吗,可以直接使用的那种,我的代码在烧录之后数码管一直处于熄灭状态
993 浏览 0 评论
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
781 浏览 0 评论
893 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16962 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 17:41 , Processed in 0.712808 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2710