完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
USART介绍 USART(通用同步异步收发器)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART,它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。 USART主要特性 ● 全双工的,异步通信 ● 分数波特率发生器系统 ─ 发送和接收共用的可编程波特率,最高达4.5Mbits/s ● 可编程数据字长度(8位或9位) ● 可配置的停止位-支持1或2个停止位 ● 发送方为同步传输提供时钟 ● 单独的发送器和接收器使能位 ● 检测标志 ─ 接收缓冲器满 ─ 发送缓冲器空 ─ 传输结束标志 ● 校验控制 ─ 发送校验位 ─ 对接收数据进行校验 ● 四个错误检测标志 USART功能 任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。 ● 总线在发送或接收前应处于空闲状态 ● 一个起始位 ● 一个数据字(8或9位),最低有效位在前 ● 0.5,1.5,2个的停止位,由此表明数据帧的结束 ● 使用分数波特率发生器 —— 12位整数和4位小数的表示方法。 ● 一个状态寄存器(USART_SR) ● 数据寄存器(USART_DR) ● 一个波特率寄存器(USART_BRR),12位的整数和4位小数 USART_FLAG_TXE是干嘛用的呢? 当发送数据寄存器中的数据已经取完了,该标志位就会被置1,从而引发该事件的中断。所以,其实USART_FLAG_TXE就是用来标志一个事件的,通过这个标志可以知道该事件有没有发生(即发送数据寄存器中的数据有没有被取走)。 下面讲述在不同代码写法下,得到不同实验效果【调试助手接收数据】: 1.常见写法一 void usart1_sendstr(char *str){while( (*str) != ' |