OpenEdv-开源电子网

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

STM32F4 串口缓冲区的最大字节数是多少

[复制链接]

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
发表于 2016-5-19 00:36:39 | 显示全部楼层 |阅读模式
3金钱
请问下原子哥@正点原子
您在串口实验中,有如下的宏定义。我就想问下,stm32f4串口缓冲区的储存的最大字节数是200个字节么?这个由什么来决定的呢?那么F1的呢?

1.jpg

最佳答案

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

硬件没有缓冲区,所谓缓冲区就是自己定义的而一个数组而已,只要内存够你想要多大就多大
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2282
金钱
2282
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-5-19 00:36:40 | 显示全部楼层
硬件没有缓冲区,所谓缓冲区就是自己定义的而一个数组而已,只要内存够你想要多大就多大
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1699
金钱
1699
注册时间
2012-5-10
在线时间
438 小时
发表于 2016-5-19 08:32:54 | 显示全部楼层
硬件缓冲区是1个字节,发送接收共用
如有技术问题,微信扫头像交流,STM32,JAVA,服务器
回复

使用道具 举报

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
 楼主| 发表于 2016-5-23 14:22:34 | 显示全部楼层
zdfwyh 发表于 2016-5-19 00:36
硬件没有缓冲区,所谓缓冲区就是自己定义的而一个数组而已,只要内存够你想要多大就多大

好的。你说是内存够,是指的什么?
不好意思,前几天我的个人电脑总是登录不上去这个网站,回复有点慢。
回复

使用道具 举报

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
 楼主| 发表于 2016-5-23 14:26:51 | 显示全部楼层
xsx127 发表于 2016-5-19 08:32
硬件缓冲区是1个字节,发送接收共用

谢谢版主,您说是硬件缓冲区是1一个字节,这个在参考手册中好像没找到。
这个是适用于所有的串口,还是仅仅stm32是这样呢。
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2282
金钱
2282
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-5-23 14:37:23 | 显示全部楼层
因为串口输入输出都是用寄存器USARTx->DR,而USARTx->DR,只有1个字节,相当于只有1个字节的缓冲区.每个串口1个字节.
回复

使用道具 举报

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
 楼主| 发表于 2016-5-24 11:34:06 | 显示全部楼层
zdfwyh 发表于 2016-5-23 14:37
因为串口输入输出都是用寄存器USARTx->DR,而USARTx->DR,只有1个字节,相当于只有1个字节的缓冲区.每个串口1 ...

哦哦,明白了看手册中这个寄存器,确实是一个字节。
这个缓冲区,怎么理解您说是内存够,想多大,就多大,这个能具体阐述一下么。
内存,哪个的内存?
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2282
金钱
2282
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-5-24 11:59:15 | 显示全部楼层
本帖最后由 zdfwyh 于 2016-5-24 12:02 编辑
huaiqiao 发表于 2016-5-24 11:34
哦哦,明白了看手册中这个寄存器,确实是一个字节。
这个缓冲区,怎么理解您说是内存够,想多大,就多大 ...

缓冲区就是自己定义的一个数组,在串口接收中断中将接收到的数据存放在该数组中,然后由其他程序来负责处理缓存中的内容,处理完成后清空缓存,或者设置标志位,表示缓存已经被处理.等等,全由编程者自己决定.发送一般不用定义缓存数组,基本是直接发送,不需要缓存.
如你发的那张图片,框起来的地方只是定义大小,你可以搜索到后面用该数据定义了一个数组,或者用该数据申请了一个内存区.这就是缓冲区.至于在什么位置,如果是数组,你不去指定地址,那么它就在CPU的内存中,如果你去指定地址,那么就由你觉定这个缓冲区放在哪里.如果是动态申请内存区,那么就是由malloc的参数决定缓冲区放在哪里.至于大小,上面的解释应该很清楚了,既然在内存区里,那么它所能拥有的大小自然就由它所在的内存区的大小来限制,不可能超出内存区的大小吧
回复

使用道具 举报

12

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2014-12-26
在线时间
28 小时
 楼主| 发表于 2016-5-30 10:48:10 | 显示全部楼层
zdfwyh 发表于 2016-5-24 11:59
缓冲区就是自己定义的一个数组,在串口接收中断中将接收到的数据存放在该数组中,然后由其他程序来负责处理 ...

好的,很感谢,谢谢回复。
不好意思,这几天房子里面的网老是登陆不上这个网站。回复有点迟了,抱歉。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 11:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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