OpenEdv-开源电子网

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

STM32战舰版串口通信学习

[复制链接]

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
发表于 2016-11-23 17:55:26 | 显示全部楼层 |阅读模式
2金钱
这几天一直在学习串口通信实验,实验例程我基本上弄明白了,但是还有些细节上的问题没有明白。
第一:帧到底是什么概念,是指从接受端存入缓冲器里面的所有数据吗?
第二:缓冲器指的是什么,在什么存储器里面,中文手册里面的USART_DR里面只是32位的寄存器,而且能够用到的位只有9位,看样子肯定不是缓冲器。
第三:USART_DR里面包含了两个寄存器TDR和RDR但是USART_DR只是一个32位的存储器,是不是TDR和RDR指得都是这同一个寄存器。
第四:例程中规定的缓冲器最大存储字节是200字节,但是接受或者发送一个数据却是8位或者9位的数据,其中还可能会有起始位、停止位、奇偶校验位等完全超过了一个字节的长度,存入到缓冲器时,怎么存储的?
第五:例程中缓冲器规定最大存储字节是200字节,按照一个汉字占两个字节来算应该可以存储100个汉字,我发现输入了很多字,但是只有前99个字被存储了,后面的全部被省了,为什么?
第六:关于中断的,例程用到的是接收中断,即读取缓冲器中数据不为0即产生中断,从它的中断使能解释是缓冲器非0即产生中断,中断使能的条件是RXNE被置1产生中断,但是RXNE被置1的条件是USART_DR非空才置1,按照这个推理那缓冲器就是USART_DR寄存器,但是这个寄存器只有9位比特位能用,完全不够存储一句话甚至一个汉字,怎么能做缓冲呢?导致中段产生的条件应该是缓冲器非0造成的,所以缓冲器不是USART_DR。
第七:例程中的中断使用是如何体现出来的?主函数的功能是检测到有换行符输入就从缓冲器发送数据,中断事件是接收到数据产生中断。但是这个中断在主程序中怎么体现出来的呢?如果中断产生的条件改为发送数据中断,效果和接收数据中断效果均是一样的呀,无论接收数据中断还是发送数据中断效果都是一样的。

RXNEIE中断使能

RXNEIE中断使能

RXNE中断

RXNE中断

主函数功能

主函数功能

中断时间

中断时间

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

42

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2016-3-8
在线时间
57 小时
 楼主| 发表于 2016-11-23 17:55:27 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 10:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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