OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3398|回复: 6

STM32F103VGT6串口3发送数据丢包问题??

[复制链接]

28

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2017-10-14
在线时间
76 小时
发表于 2018-4-17 16:34:39 | 显示全部楼层 |阅读模式
5金钱
下面为初始化代码:
void uart_init(u32 bound){
  GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
       
        /* config USART3 clock */
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
        /* USART1 GPIO config */
        /* Configure USART3 Tx (PB.10) as alternate function push-pull */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);   
        /* Configure USART3 Rx (PB.11) as input floating */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        /* USART3 mode config */
        USART_InitStructure.USART_BaudRate = bound;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No ;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART_Init(USART3, &USART_InitStructure);
       
        USART_Init(USART3,&USART_InitStructure);
  //USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//¿aÆô′®¿ú½óêüÖD¶Ï
  USART_Cmd(USART3, ENABLE);                    //ê1Äü′®¿ú3
}
下面为仿真时寄存器数据及测试部分数据丢失现象截图
QQ截图20180417162210.png

测试数据丢失,此现象不是个例...............
QQ截图20180417162538.png
使用STM32CUBE配置过一个同样的串口3发送数据,未出现丢包现象,请问有没有人遇到过同样的问题,请高手赐教???????

最佳答案

查看完整内容[请看2#楼]

你的write函数中,发送完数据之后是不是没有等待发送完成标志位清零?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
发表于 2018-4-17 16:34:40 | 显示全部楼层
你的write函数中,发送完数据之后是不是没有等待发送完成标志位清零?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-18 01:35:19 | 显示全部楼层
棒棒的
回复

使用道具 举报

28

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2017-10-14
在线时间
76 小时
 楼主| 发表于 2018-4-18 08:27:49 | 显示全部楼层

原子哥,求指导!!!!
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-4-18 09:35:00 | 显示全部楼层
这个可能性太多了。可能是你的串口时钟太慢,跟不上系统执行程序的速度。你在几个write()之间延时1个毫秒看看。
回复

使用道具 举报

28

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2017-10-14
在线时间
76 小时
 楼主| 发表于 2018-4-18 13:27:17 | 显示全部楼层
candylife9 发表于 2018-4-18 09:35
这个可能性太多了。可能是你的串口时钟太慢,跟不上系统执行程序的速度。你在几个write()之间延时1个毫秒 ...

延时试过了,没效果
回复

使用道具 举报

28

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2017-10-14
在线时间
76 小时
 楼主| 发表于 2018-4-18 14:57:25 | 显示全部楼层
周易八索连山 发表于 2018-4-18 09:50
你的write函数中,发送完数据之后是不是没有等待发送完成标志位清零?

嗯,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 17:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表