OpenEdv-开源电子网

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

关于stm32 串口全双工的问题

[复制链接]

4

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-3-5
在线时间
1 小时
发表于 2013-3-31 01:03:01 | 显示全部楼层 |阅读模式
最近要做的一个东西要大量的用到串**互,一方面要接受大量地数据,一方面要及时发送数据。
我发现一个问题:(以串口2为例 Usart2;)
在stm32说 串口是全双工的,但是数据的发送和接收寄存器却都是 USART2->DR;
这让我百思不得其解,这样如果我在用中断接收数据的时候 ,正好要发送,这是不是会发生问题!(我接受数据的时间是不可预知的)
我听说51 虽然串口的发送和接收的寄存器都叫SBUF,但是实际上是两个东东(我也不知道叫啥),这个stm32会不会也是这种情况(两个数据寄存器只是名字一样?)
如果只是名字一样,实际寄存器一样(全双工没问题),但是这个不是违反了高级语言(如c语言)的规则吗(一个变量一个名字)? 这种机制有啥好处?(本着凡存在皆合理精神思考)
求大神讲解一番;

另一个问题:
我看到 USART2->DR这个(我在中断函数里读数据)(u8 temp= USART2->DR)
我就想这个 USART2应该是一个结构体变量吧,DR应该是他的一个成员变量吧;
但是按F12一查,发现这个:
#define USART2              ((USART_TypeDef *) USART2_BASE)
#define USART2_BASE           (APB1PERIPH_BASE + 0x4400)
这只是个地址,我彻底迷茫了,这个咋理解呢//这个库这么博大精深啊

求大神讲解,再次,谢谢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2013-3-31 01:11:02 | 显示全部楼层
前面的问题自己读手册.

"但是这个不是违反了高级语言(如c语言)的规则吗(一个变量一个名字)?"
硬件完全遵循高级程序语言了, 还叫硬件吗?

" 这种机制有啥好处?"
一个寄存器只能读, 另一个只能写, 给它们各自分配不同的地址编号岂不是浪费?

后面的问题, 自己理清楚结构体的内存布局, C语言的指针以及指针强制转换的问题.
https://github.com/roxma
回复 支持 反对

使用道具 举报

4

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-3-5
在线时间
1 小时
 楼主| 发表于 2013-3-31 01:22:10 | 显示全部楼层
回复【楼主位】humanking7:
---------------------------------
我已经理解了能全双工的原因了,原来就是数据手册上有个图(P474),但是为啥这样做了,(另外问题2是如何解答呢)
回复 支持 反对

使用道具 举报

4

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-3-5
在线时间
1 小时
 楼主| 发表于 2013-3-31 01:36:50 | 显示全部楼层
回复【2楼】Pony279:
---------------------------------
真是厉害啊,谢谢您
可是USART2->DR中没有 没有查到关于DR的东西,这个DR是在那定义的?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-3-31 10:04:25 | 显示全部楼层
回复【4楼】humanking7:
---------------------------------
看STM32参考手册。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-3-5
在线时间
1 小时
 楼主| 发表于 2013-4-1 23:19:01 | 显示全部楼层
回复【2楼】Pony279:
---------------------------------
原来是USART_TypeDef 这个结构体的变量,原来不知道有这个,现在了解了,谢谢了
回复 支持 反对

使用道具 举报

4

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-3-5
在线时间
1 小时
 楼主| 发表于 2013-4-1 23:19:11 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
ok
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-11-17
在线时间
4 小时
发表于 2017-11-4 22:25:56 | 显示全部楼层
捕获.PNG 1.PNG

实际上是两个寄存器,好奇的是访问地址居然是一致的,不过楼上的前辈说的有道理!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 04:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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