下载此文档

STM32 例程 串口实验.docx


文档分类:IT计算机 | 页数:约46页 举报非法文档有奖
1/46
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/46 下载此文档
文档列表 文档介绍
该【STM32 例程 串口实验 】是由【guoxiachuanyue015】上传分享,文档一共【46】页,该文档可以免费在线阅读,需要了解更多关于【STM32 例程 串口实验 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。实验要求
•使用开发板上的串口向PC发送信息
•PC通过串口向开发板发送数据,CPU在接收到后,确认信息,并通过串口返回数据
例如:开发板先发送一个字符‘c',然后PC发送一个字符‘a',开发板接收到后,再发送一个字符‘b'
[编辑]实验目的
学****和掌握STM32的USART模块的工作原理和使用方法
学****和掌握USART固件库的使用
掌握串口中断的使用方法
[编辑]实验分析
硬件分析:
USART的工作原理
软件分析:
USART固件库
USART实例
[编辑]开发板原理图设计
MAX3232
Ill
C76
0
g
[3,2S]R5232_RX<
[監23]us232_n<
3
VCC_3vl
C73

R73DB9-FEMALE0

C1+CL-
V+
C2+
V-
€2-
niN
T10UT
T2IN
T2OUT
R10UT
R11N
R,2oirr
R2IN
IT
与主芯片的连接
[15’23]USART1,TX<[15t25]USART1_RXI
PA91D1
PA1O10?
n*.
-l"%I宀I!^~
PA9/
PA10/USART1_RX/TIM1_CH3
[编辑]硬件知识点
详见STM32F10XXX英文版参考手册RM0008-ReferenceManual
[编辑]USART
通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用小数波特率发生器提供宽范围的波特率选择。
它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIRENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。
使用多缓冲器配置的DMA方式,可以实现高速数据通信。
(表)USART模式支持
USARTmodes
USART1
USART2
USART3
UART4
UART5
Asynchnonousmode

X
X
X
X
HardwareFlowControl
X
X
X
NA
NA
MultibufferCommunication(DMA)
X
X
X
X
NA
MultiprocessorCommunication
X
X
X
X
X
Syrichronous
X
X
X
NA
NA
Smadcand
X
X
X
NA
NA
HalbDuplex(Single-Wiremode)
X
X
X
X
X
IrDA
X
X
X
X
X
UN
X
X
X
X
X
0USART内部结构
X=supported;NA=notapplicable
RE

PWDaTsS:
FRDATA
|DAT^RE<3*5TEH1DR
EROCOIWStKttFlog创Of
IRDAIN
乜TPfi
raRTS
沁T$
rRAWMit
DOWTRni
CTSLBDTHETCWWE
nr.■:■?Mrffpf
u£aAT
ftNFEWUFT
CONTTROt
匚门代TK1MAJRAiJDFI*TFCiFNFRaTDR
usartdiv=DivMia閹占&a+(DiFractionvic)
HECEIVEHCLOCK
IrDASlflENDECBLOCK
TransniSNttRegistw
TWiSMEE河CLOCK
IRECErVEFlRATE
IA£*COttTftOL
Ipcu伽■口n
CM"'也rdwiHIHow
corirD<i4sr
Transmrl!DataRs^qIbcfTDfii
RecweCWaRegister(RDRf
~1~r~
7
'(CPUftDM
>=l.
3厂杞
HD
IRIP
二FN
CR2
I
i
4i
lwe|
CKE*|
.QC.
♦CKDOMIHCL
UE
M
PCE
PS
阳E
WAKE
UP
UHE
■h

RECFIVFHOCMTHOL
-1-
1
USARTBAR
1吓*
TRAJM5MTTERRATtOTMTFKX
;16«.ruwrDf¥
[编辑]引脚定义
任何USART双向通信至少需要两个引脚:接收数据输入(RX)和发送数据输出(TX)。
RX:接收数据输入。通过过采样技术来区别数据和噪音,从而恢复数据。
TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。
在同步模式中需要下列引脚:
•CK:发送器时钟输出。此引脚输出用于同步传输的时钟,(在起始位和停止位上没有时钟脉冲,软件可选地,可以在最后一个数据位送出一个时钟脉冲)。数据可以在
RX上同步被接收。这可以用来控制带有移位寄存器的外部设备(例如LCD驱动器)。时钟相位和极性都是软件可编程的。在智能卡模式里,CK可以为智能卡提供时钟。
在IrDA模式里需要下列引脚:
IrDA_RDI:IrDA模式下的数据输入。
IrDA_TDO:IrDA模式下的数据输出。
在硬件流控模式中需要下列引脚:
nCTS:清除发送,若是高电平,在当前数据传输结束时阻断下一次的数据发送。
nRTS:发送请求,若是低电平,表明USART准备好接收数据(表)USART引脚配置

USARTpinout
Configuration
GP1OccnfiguratlQH
□SARTxTX
FuHdupl&Jt
A:ternatefurctiDnpush-pu'l
Ha*synchronojsEdQo
A't^rnatsfunctionpush-pu^i
□SARTjcRX
Fullauplex
inputtwating'IrifXJtpuli-up
Ha+synchronousmcxie-
NotusedCan応u&Bd和aggneial10
□SARTx^CK
SynchroriQusmode
A::ernstgtmJiQnpush-py:l
□SARTjc^RTS
hardwarecontrol
Aternstgfunct'onpush-pu!l
□SARTx^CTS
Hamjwar-efic^1control
inpu!-oa(ing/Inputpuil-up
[编辑]寄存器
一个状态寄存器(USART_SR)
一个数据寄存器(USART_DR)
三个控制寄存器(USART_CR1,USART_CR2,USART_CR3)
一个波特率寄存器(USART_BRR)
一个智能卡模式下的保护时间寄存器(USART_GTPR)
关于以上寄存器中每个位的具体定义,请参考USART寄存器描述。
[编辑]控制逻辑
发送控制
接收控制
时钟控制
硬件流控制
•波特率控制(发送器和接收器)
•中断控制
•唤醒单元
[编辑]USART寄存器描述
F表列出了USART寄存器的地址映射和复位值。可以以半字(16位)或字(32
位)的方式访问这些外设寄存器。
OffsetRegister話黑黑禺爲自盂离爲离
H彌rvsd
CtoOO
CmW
MOC
toew
CMia
USART寻n
HbSHS3ij6
USARTOR
USARTBftR
U$ARTCR1
USARTCR2
PeseOme
USARTCR3
USAFITGTPR
R?5Pflvthjp
00
RewrvKJ
Rqserved
RtSSiWOd
MSihjhWIUJS"□Hal
"gag凹3d
Sd总
ZS5o
LJSLIU
总~|
Ezwfo
^-□5
ZUJ口IN
o
nnhl_
M-
zLUhn
M-
WLLJ
....
GT{7:0]
LjjglgJ
q"i

P5q7:0j
[编辑]USART_SR(Statusregister)状态寄存器
rc_w0:软件可以读此位,也可以通过写0'清除此位,写'1'对此位无影响。
位31:10保留位,由硬件强制为0
位9CTS:CTS标志
如果设置了CTSE位,当nCTS输入状态变化时,该位由硬件置'1'。由软件清'0'(向该位写'0')。如果USART_CR3寄存器中的CTSIE=1,则产生中断。
0:nCTS状态线上没有变化;
1:nCTS状态线上发生变化。
在UART4和UART5上,该位不可用。
位8LBD:LIN断开检测标志
当检测到LIN断开时,该位由硬件置'1'。由软件清'0'(向该位写'0')。如果USART_CR2寄存器中的LBDIE=1,则产生中断。
0:没有检测到LIN断开;
1:检测到LIN断开。
注意:若LBDIE=1,当LBD=1时产生中断。
位7TXE:发送数据寄存器(TDR)空
当TDR寄存器中的数据被转移到移位寄存器时,该位由硬件置'1'。如果USART_CR1寄存器中的TXEIE=1,则产生中断。写USART_DR寄存器,将该位清'0'。
0:数据还没有被转移到移位寄存器;
1:数据已经被转移到移位寄存器。注意:该位被用在单缓冲发送中。
位6TC:发送完成
当包含有数据的一帧发送完成后,并且TXE=1时,该位由硬件置'1'。如果USART_CR1寄存器中的TCIE=1,则产生中断。该位由软件序列清'0'(先读一次USART_SR寄存器,后写一次USART_DR寄存器)。TC位也可以通过向该位写'0'来清除,此清零方式只在多缓冲通信中推荐使用。0:发送还未完成;
1:发送完成。
位5RXNE:读数据寄存器(RDR)非空(Readdataregisternotempty)
当RDR移位寄存器中的数据被转移到USART_DR寄存器时,该位由硬件置位。如果USART_CR1寄存器中的RXNEIE=1,则产生中断。读USART_DR寄存器,将该位清零。RXNE位也可以通过向该位写'0'来清除,此清零方式只在多缓冲通信中推荐使用。
0:没收到数据;
1:收到数据,可以读出。
位4IDLE:监测到总线空闲(IDLElinedetected)
当检测到总线空闲时,该位被硬件置位。如果USART_CR1寄存器中的
IDLEIE=1,则产生中断。该位由软件序列清除(先读USART_SR,后读USART_DR)。
0:没有检测到空闲总线;
1:检测到空闲总线。
注意:IDLE位不会再次被置位,直到RXNE位被置位(即又检测到一次空闲总线)
位3ORE:溢出错误(Overrunerror)
RXNE=1的同时,移位寄存器中接收到的当前数据,准备转移至RDR寄存器时,该位被硬件置位。如果USART_CR1中的RXNEIE=1,则产生中断。该位由软件序列清零(先读USART_SR,后读USART_CR)。
0:没有溢出错误;
1:检测到溢出错误。
注意:该位被置位时,RDR寄存器中的数据不会丢失,但是移位寄存器中的数据会被覆盖。在多缓冲通信模式下,如果设置了EIE位,则ORE置位会产生中断。
位2NE:噪声错误标志(Noiseerror)
在接收到的帧中检测到噪声时,该位由硬件置位。该位由软件序列清除(先读USART_SR,再读USART_DR)。
0:没有检测到噪声;
1:检测到噪声。
注意:该位不会产生中断,因为它和RXNE一起出现,硬件会在设置RXNE标志时产生中断。在多缓冲通信模式下,如果设置了EIE位,则NE置位会产生中断。
位1FE:帧错误(Framingerror)
当检测到同步错位,过多的噪声或者断开符,该位被硬件置位。由软件序列将其清零(先读USART_SR,再读USART_DR)。
0:没有检测到帧错误;
1:检测到帧错误或者break符。
注意:该位不会产生中断,因为它和RXNE一起出现,硬件会在设置RXNE标志时产生中断。如果当前传输的数据既产生了帧错误,又产生了溢出错误,硬件还是会继续该数据的传输,并且只设置ORE位。在多缓冲通信模式下,如果设置了EIE位,则FE置位会产生中断。
位0PE:校验错误(Parityerror)
在接收模式下,如果出现奇偶校验错误,该位被硬件置位。由软件序列对其清零(先读USART_SR,再读USART_DR)。在清除PE位前,软件必须等待RXNE标志位被置'1'。如果USART_CR1中的PEIE=1,则产生中断。0:没有奇偶校验错误;
1:奇偶校验错误。
「编辑]USART_DR(DataRegister)数据寄存器
位31:9保留位,由硬件强制为0
位8:0DR[8:0]:数据值(Datavalue)
包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),—个给接收用(RDR),该寄存器兼具读和写的功能。TDR寄存器提供了内部总线和输出移位寄存器之间的并行接口。RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。(参见USART内部结构框图)如果USART_CR1中的校验控制使能位PCE=1,在发送数据时,写到MSB的值(根据数据的长度不同,MSB是第7位或者第8位)会被后来的校验位取代。接收数据时,读到的MSB位是接收到的校验位。
[编辑]USART_BRR(BaudRateRegister)波特率寄存器
位31:16保留位,硬件强制为0
位15:4DIV_Mantissa[11:0]:USARTDIV的整数部分
这12位定义了USART分频器除法因子(USARTDIV)的整数部分。
位3:0DIV_Fraction[3:0]:USARTDIV的小数部分
这4位定义了USART分频器除法因子(USARTDIV)的小数部分。
「编辑]USART_CR1(ControlRegister1)控制寄存器1
31M292a272B25242U222120191817
ReiiM'yud
14131211IDBS7654
Rgserved
M
WAKE
PCS
PS
PEC
TXEiE
TCiE
HXNEIE
gig
TE
AS
RWU
Rw
EW
rw
rw
rw
rw
rvr
rw
nt
IW
rw
rw
rw
evt
位31:14保留位,硬件强制为0
31M292a272B25242U222120191817
位13UE:USART使能(USARTenable)
当该位被清零,在当前字节传输完成后USART的分频器和输出停止工作,以减少功耗。该位由软件设置和清零。
0:USART分频器和输出被禁止;
1:USART模块使能。
位12M:字长(Wordlength)
该位定义了数据字的长度,由软件对其设置和清零
0:—个起始位,8个数据位,n个停止位;1:一个起始位,9个数据位,n个停止位。
注意:在数据传输过程中(发送或者接收时),不能修改这个位。
位11WAKE:唤醒的方法(Wakeupmethod)
这位决定了把USART唤醒的方法,由软件对该位设置和清零。
0:被空闲总线唤醒;
1:被地址标记唤醒。
位10PCE:检验控制使能(Paritycontrolenable)
用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位的检测)。当使能了该位,在发送数据的最高位(如果M=l,最咼位就是第9位;如果M=0,最咼位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置'1'或清'0'。一旦设置了该位,当前字节传输完成后,校验控制才生效。
0:禁止校验控制;
1:使能校验控制。
位9PS:校验选择(Parityselection)
当校验控制使能后,该位用来选择是采用偶校验还是奇校验。软件对它置'1'或清'0'。当前字节传输完成后,该选择生效。
0:偶校验;
1:奇校验。

STM32 例程 串口实验 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息