跳转到主要内容
cathy 提交于

串口是我们在编程时最经常用的问题,通常用它来发送和接收数据,同时它还有另外一个功能——检测程序是否正确,stm32f030系类单片机自然而然少不了串口,本文主要介绍STM32F030_USART的几个常用的简单应用和它的功能配置。

<strong>1、概述</strong>

通用同步异步收发器(USART) 提供了一个灵活的方式,使 MCU 可以与外部设备通过工业标准 NRZ 的形式实现全双工异步串行数据通讯。USART 可以使用分数波特率发生器,提供了超宽的波特率设置范围。可以使用 DMA 实现多缓冲区设置, 从而能够支持高速数据通讯

<ul>
<li>全双工, 异步通讯</li>
<li>可配置的 16 倍或 8 倍过采样方法提供速度和时钟容忍度间的灵活选择</li>
<li>小数波特率发生器</li>
<li>自动波特率检测</li>
<li>单线半双工通讯</li>
<li>停止位个数可设置 - 支持 1 个或 2 个停止位</li>
<li>十四个中断源和中断标志 <br />
- CTS 切换 <br />
- LIN 断开检测 <br />
- 发送数据寄存器空 <br />
- 发送完成 <br />
- 接收数据寄存器满 <br />
- 检测到线路空闲 <br />
- 溢出错误 <br />
- 帧错误 <br />
- 噪声错误 <br />
- 奇偶错误 <br />
- 地址 / 字符匹配 <br />
- 接收超时中断 <br />
- 块结束中断 <br />
- 从 Stop 模式唤醒</li>
<li>校验控制: <br />
- 发送奇偶校验位 <br />
- 接收数据的奇偶检查</li>
</ul>

<strong>2、准备工作</strong>

1)认真阅读STM32F030x数据手册
2)了解USART的运行原理
3)查看STM32F030开发板原理图和封装图
4)电脑装有keil等编译软件

<strong>3、寄存器说明</strong>

控制寄存器 1(USART_CR1)

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20535-3-1.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20536-3-2.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20537-3-3.png&quot; alt=“” width="600"></center>

控制寄存器 2(USART_CR2)

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20538-3-4.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20539-3-5.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20540-3-6.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20541-3-7.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20542-3-8.png&quot; alt=“” width="600"></center>

控制寄存器 3(USART_CR3)

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20543-3-9.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20544-3-10.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20545-3-11.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20546-3-12.png&quot; alt=“” width="600"></center>

<strong>波特率寄存器( USART_BRR) </strong>

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20547-3-13.png&quot; alt=“” width="600"></center>

<strong>保护时间和预分频器寄存器( USART_GTPR) </strong>

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20548-3-14.png&quot; alt=“” width="600"></center>

<strong>中断和状态寄存器(USART_ISR) </strong>

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20549-3-15.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20550-3-16.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20551-3-17.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20552-3-18.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20553-3-19.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20554-3-20.png&quot; alt=“” width="600"></center>

<strong>中断标志清除寄存器( USART_ICR) </strong>

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20559-3-21.png&quot; alt=“” width="600"></center>
<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20560-3-22.png&quot; alt=“” width="600"></center>

<strong>数据接收寄存器( USART_RDR) </strong>

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20561-3-23.png&quot; alt=“” width="600"></center>

<strong>数据发送寄存器( USART_TDR) </strong>

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20562-3-24.png&quot; alt=“” width="600"></center>

<strong>4、USART配置</strong>

1)USART原理图

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20563-4-1.png&quot; alt=“” width="600"></center>

2)USART代码分析

①USART初始化

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20564-4-2.jpg&quot; alt=“” width="600"></center>

②USART发送数据

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20565-4-3.png&quot; alt=“” width="600"></center>

③USART接收数据

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20566-4-4.png&quot; alt=“” width="600"></center>

3 )printf函数重映射

<center><img src="http://mouser.eetrend.com/files/2017-06/博客/100006577-20567-4-5.png&quot; alt=“” width="600"></center>

<strong>5、总结</strong>

在进行USART的printf函数的使用时,一定要记得将微库打开:点击keil工具栏的小魔术棒符号,进入Target配置,勾选Use MicroLib

本文转载自<a href="http://blog.csdn.net/qq_29653157/article/details/69949974">晗生缘</a&gt;

STM32F030_USART详细配置说明