OpenEdv-开源电子网

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

救助!关于串口1和串口3相同代码却有不同的结果

[复制链接]

8

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2018-3-1
在线时间
87 小时
发表于 2018-10-25 22:03:52 | 显示全部楼层 |阅读模式
10金钱
    最近需要32和openmv数据交互,使用的是STM32F103C8T6的小核心板,数据通过串口发送给32,。
    但是遇到的问题是:相同的接收中断,但是串口1和串口3接收到的数据是不同的,仔仔细细对照了原子哥的例程和参考手册,没有发现什么配置问题,当然有配置问题也根本不可能接收到数据。。但是奇怪的就是接收到的数据是不一样的
    下面的图片分别为串口1初始化代码及中断服务函数(已经将所有不需要的代码删除干净,本来传的是一组数据,这里我只传一个u8的数据(0xAA))、串口1数据寄存器接收到的值、串口3初始化代码及中断服务函数、串口3数据寄存器接收到的值        不知道大家有没有遇到过这种情况,希望大家帮解答一下 UART1.PNG 串口1.PNG UART3.PNG 串口3.PNG

   


最佳答案

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

谢谢大家,找到原因了,串口1挂载在APB2,串口2、3(以及4、5)都挂载在APB1操作速度限于36MHz, APB2操作于全速(最高72MHz),所以是我初始化的时候出错了,初始化成72Mhz是错误的,应当初始化成36MHZ的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2018-3-1
在线时间
87 小时
 楼主| 发表于 2018-10-25 22:03:53 | 显示全部楼层
谢谢大家,找到原因了,串口1挂载在APB2,串口2、3(以及4、5)都挂载在APB1操作速度限于36MHz, APB2操作于全速(最高72MHz),所以是我初始化的时候出错了,初始化成72Mhz是错误的,应当初始化成36MHZ的
回复

使用道具 举报

8

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2018-3-1
在线时间
87 小时
 楼主| 发表于 2018-10-25 22:24:35 | 显示全部楼层
大家有遇到过这种问题吗
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-10-25 22:36:52 来自手机 | 显示全部楼层
波特率设置肯定有问题,多检查下
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2018-8-11
在线时间
13 小时
发表于 2018-10-25 23:09:17 | 显示全部楼层
用库函数试试
回复

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-10-26 09:40:16 | 显示全部楼层
我猜初始化错误,你发出来看看
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复

使用道具 举报

0

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
177
金钱
177
注册时间
2018-9-27
在线时间
15 小时
发表于 2018-10-26 09:46:49 | 显示全部楼层
一步步检查,肯定是哪里错了
回复

使用道具 举报

8

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2018-3-1
在线时间
87 小时
 楼主| 发表于 2018-10-26 15:38:44 | 显示全部楼层
初始化代码,这不可能出错啊。。已经把所有不需要的都删掉了 初始化.PNG

回复

使用道具 举报

8

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2018-3-1
在线时间
87 小时
 楼主| 发表于 2018-10-26 15:39:14 | 显示全部楼层
秋天 发表于 2018-10-26 09:40
我猜初始化错误,你发出来看看

已经补了图了
回复

使用道具 举报

8

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2018-3-1
在线时间
87 小时
 楼主| 发表于 2018-10-26 15:39:41 | 显示全部楼层
yklstudent 发表于 2018-10-25 22:36
波特率设置肯定有问题,多检查下

波特率都是设置的115200但是结果就是不一样
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-10-26 16:12:34 | 显示全部楼层
一个是APB1时钟,一个是APB2时钟,其工作时钟都是不一样的,楼主注意这个问题了吗?
乖乖的使用库吧
一分耕耘一分收获。
回复

使用道具 举报

24

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
637
金钱
637
注册时间
2018-7-13
在线时间
197 小时
发表于 2018-10-26 16:22:34 | 显示全部楼层
yklstudent 发表于 2018-10-26 16:12
一个是APB1时钟,一个是APB2时钟,其工作时钟都是不一样的,楼主注意这个问题了吗?
乖乖的使用库吧

时钟没错的
回复

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-10-26 17:43:51 | 显示全部楼层

72改36试试
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复

使用道具 举报

1

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2012-12-2
在线时间
67 小时
发表于 2018-10-27 08:19:30 | 显示全部楼层
Gyyjx123024 发表于 2018-10-26 15:38
初始化代码,这不可能出错啊。。已经把所有不需要的都删掉了

uart3_init(36,115200);//UART3所使用的的总线是APB1,UART1所使用的的总线是APB2,看存存器映像和时钟树
回复

使用道具 举报

2

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2014-3-25
在线时间
16 小时
发表于 2018-10-27 19:46:02 | 显示全部楼层
hwb_dream 发表于 2018-10-27 08:19
uart3_init(36,115200);//UART3所使用的的总线是APB1,UART1所使用的的总线是APB2,看存存器映像和时钟树

用串口3,stm32发送给上位机的可以收到,但是上位机发送给stm32的收不到。。。会是APB1和APB2的问题吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-7 21:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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