串口深入学习

串口就是8位8位传送的。即一个字节。一定利用好控制寄存器。TXE RXNE等

一个字节产生一个中断。

(1)数据发送过程
    当使能了发送使能位TE后,数据要发送出去,首先要将数据写进USART_DR寄存器(和51单片机SBUF 一样, USART_DR寄存器实际包含了两个寄存器,给发送用的TDR和给接收用的RDR,在 USART_DR寄存器下还有一个发送/接收移位寄存器,数据的发送接收最后都要通过移位寄存器 ),如果此时USART正在发送数据,写入的数据先保存在TDR寄存器中,传输完成后再把该数据复制进移位寄存器。如果此时USART没有在发送数据,对USART_DR寄存器的写操作,数据直接存放进移位寄存器。无论哪种方式,数据存进移位寄存器后,便开始发送,TXE被置位,当一帧数据发送完(停止位发送后),TC位被置位,并且如果USART_CR1的TCIE位被置位,将产生中断。数据的发送是从低位发送起。
(2)数据的接收过程
    当USART_CR1的RE位被使能后,且接收器的RX端由高电平被拉为低电平,那么接收开始。数据的最低有效位首先从RX脚移进移位寄存器。
    ■ 当RXNE(接收数据寄存器非空标志位)被置位,表明移位寄存器的内容被转移到RDR,此时数据已经被接收并且可以被读出,USART_DR和相关的错误标志位。
    ■ 如果RENEIE位被置位,将产生中断,如果在接收期间,检测到侦错误、噪音、溢出错误,错误标志位将被置位。
    ■ 在多缓冲器通信时, RXNE在每个字节接收后被置起,并由DMA对数据寄存器的读操作而 清零。
    ■ 在单缓冲器模式里,由软件读USART_DR寄存器完成对RXNE位清除。 RXNE标志也可以通 过对它写0来清除。 RXNE位必须在下一字符接收结束前被清零,以避免溢出错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值