完善资料让更多小伙伴认识你,还能领取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位数据加一位奇偶校验位 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
828 浏览 0 评论
824 浏览 0 评论
861 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
836 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1292 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11820 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 06:56 , Processed in 0.638374 second(s), Total 84, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号