第四章 usart串口的一般应用.doc

上传人:文库蛋蛋多 文档编号:2387873 上传时间:2023-02-17 格式:DOC 页数:32 大小:620.50KB
返回 下载 相关 举报
第四章 usart串口的一般应用.doc_第1页
第1页 / 共32页
第四章 usart串口的一般应用.doc_第2页
第2页 / 共32页
第四章 usart串口的一般应用.doc_第3页
第3页 / 共32页
第四章 usart串口的一般应用.doc_第4页
第4页 / 共32页
第四章 usart串口的一般应用.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《第四章 usart串口的一般应用.doc》由会员分享,可在线阅读,更多相关《第四章 usart串口的一般应用.doc(32页珍藏版)》请在三一办公上搜索。

1、第四章 USART串口的一般应用4.1 USART介绍 通用同步异步收发器(USART),提供了一种灵活的方法,与使用工业标准的异步串行外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。 总之,STM32F10x系列芯片所提供的USART串口功能时分强大,基本上所知的串口功能,其都能通过硬件来实现。4.1.1 USART主要特

2、性 1全双工异步通信 ;2NRZ标准格式 ;3分数波特率发生器系统,发送和接收共用的可编程波特率,最高达4.5Mbits/s4可编程数据字长度(8位或9位)5可配置的停止位-支持1或2个停止位6LIN主发送同步断开符的能力以及LIN从检测断开符的能力,当USART硬件配置成LIN时,生成13位断开符;检测10/11位断开符7发送方为同步传输提供时钟8IRDA SIR 编码器解码器,在正常模式下支持3/16位的持续时间9智能卡模拟功能,智能卡接口支持ISO7816-3标准里定义的异步智能卡协议,智能卡用到的0.5和1.5个停止位10单线半双工通信11可配置的使用DMA的多缓冲器通信 在SRAM里

3、利用集中式DMA缓冲接收/发送字节 12单独的发送器和接收器使能位13检测标志,接收缓冲器满,发送缓冲器空 ,传输结束标志14校验控制,发送校验位,对接收数据进行校验15四个错误检测标志。溢出错误;噪音错误;帧错误;校验错误;1610个带标志的中断源。CTS改变、LIN断开符检测、发送数据寄存器空、发送完成、接收数据寄存器满、检测到总线为空闲、溢出错误、帧错误、噪音错误和校验错误 ;17多处理器通信 - 如果地址不匹配,则进入静默模式18从静默模式中唤醒(通过空闲总线检测或地址标志检测)19两种唤醒接收器的方式:地址位(MSB,第9位),总线空闲4.1.2 USART功能概述 接口通过三个引脚

4、与其他设备连接在一起。任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。 RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。 TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。 1. 在异步模式中:1总线在发送或接收前应处于空闲状态2一个起始位 3一个数据字(8或9位),最低有效位在前40.5,1.5,2个的停止位,由此表明数据帧的结束5使用分数波特率发生器 12位整数和4位小数的表示方法6一个状态寄存器(US

5、ART_SR)7数据寄存器(USART_DR)8一个波特率寄存器(USART_BRR),12位的整数和4位小数9一个智能卡模式下的保护时间寄存器(USART_GTPR) 2. 在同步模式中需要用到SCLK引脚:发送器时钟输出。此引脚输出用于同步传输的 时钟, (在Start位和Stop位上没有时钟脉冲,软件可选地,可以在最后一个数据位送出一个时钟脉冲)。数据可以在RX上同步被接收。这可以用来控制带有移位寄存器的外部设备(例如LCD驱动器)。时钟相位和极性都是软件可编程的。在智能卡模式里,SCLK可以为智能卡提供时钟。 3. 在IrDA模式里需要下列引脚: 1IrDA_RDI: IrDA模式下的

6、数据输入。 2IrDA_TDO: IrDA模式下的数据输出。 4. 硬件流控模式中需要下列引脚在: 1nCTS: 清除发送,若是高电平,在当前数据传输结束时阻断下一次的数据发送。 2nRTS: 发送请求,若是低电平,表明USART准备好接收数据 4.1.3 发送器 发送器根据M位的状态发送8位或9位的数据字。当发送使能位(TE)被设置时,使能USART同步串口,这时发送移位寄存器中的数据在TX脚上输出,相应的时钟脉冲在SCLK脚上输出。 字符发送在TX引脚上首先移出数据的最低有效位。每个字符之前都有一个低电平的起始位;之后跟着的停止位,其数目可配置。 注意: 1在数据传输期间不能复位TE位,否

7、则将破坏TX脚上的数据,因为波特率计数器停止计数。正在传输的当前数据将丢失。 2 TE位被激活后将发送一个空闲帧。 4.1.3.1 可配置的停止位 随每个字符发送的停止位的位数可以通过控制寄存器2的位13、12进行编程。 1. 1个停止位:停止位位数的默认值。 2. 2个停止位:可用于常规USART模式、单线模式以及调制解调器模式。 3. 0.5个停止位:在智能卡模式下接收数据时使用。 4. 1.5个停止位:在智能卡模式下发送数据时使用。 空闲帧包括了停止位。 断开帧是10位低电平,后跟停止位(当m=0时);或者11位低电平,后跟停止位(m=1时)。不可能传输更长的断开帧(长度大于10或者11

8、位)。 配置步骤: 1. 通过在USART_CR1寄存器上置位UE位来激活USART 2. 编程USART_CR1的M位来定义字长。 3. 在USART_CR2中编程停止位的位数。 4. 如果采用多缓冲器通信,配置USART_CR3中的DMA使能位(DMAT)。按多缓冲器通信中的描述配置DMA寄存器。 5. 设置USART_CR1中的TE位,发送一个空闲帧作为第一次数据发送。 6. 利用USART_BRR寄存器选择要求的波特率。 7. 把要发送的数据写进USART_DR寄存器(此动作清除TXE位)。在只有一个缓冲器的情况下,对每个待发送的数据重复步骤7。 4.1.3.2 单字节通信 清零TXE

9、位总是通过对数据寄存器的写操作来完成的。TXE位由硬件来设置,它表明: 1数据已经从TDR移送到移位寄存器,数据发送已经开始 2TDR寄存器被清空 3下一个数据可以被写进USART_DR寄存器而不会覆盖先前的数据 如果TXEIE位被设置,此标志将产生一个中断。 如果此时USART正在发送数据,对USART_DR寄存器的写操作把数据存进TDR寄存器,并在当前传输结束时把该数据复制进移位寄存器。 如果此时USART没有在发送数据,处于空闲状态,对USART_DR寄存器的写操作直接把数据放进移位寄存器,数据传输开始,TXE位立即被置起。当一帧发送完成时(停止位发送后),TC位被置起,并且如果USAR

10、T_CR1寄存器中的TCIE位被置起时,中断产生。 先读一下USART_SR寄存器,再写一下USART_DR寄存器,可以完成对TC位的清零。 注意: TC位也可以通过对它软件写0来清除。此清零方式只在多缓冲器通信模式下推荐使用。 4.1.3.3 断开符号 设置SBK可发送一个断开符号。断开帧长度取决M位(见0)。如果设置SBK=1,在完成当前数据发送后,将在TX线上发送一个断开符号。断开字符发送完成时(在断开符号的停止位时)SBK被硬件复位。USART在最后一个断开帧的结束处插入一逻辑1,以保证能识别下一帧的起始位。 注意:如果在开始发送断开帧之前,软件又复位了SBK位,断开符号将不被发送。如

11、果要发送两个连续的断开帧,SBK位应该在前一个断开符号的停止位之后置起。 4.1.3.4空闲符号 置位TE将使得USART在第一个数据帧前发送一空闲帧4.1.4 接收器 4.1.4.1 接收配置 在USART接收期间,数据的最低有效位首先从RX脚移进。在此模式里,USART_DR寄存器包含的缓冲器位于内部总线和接收移位寄存器之间。 数据接收配置步骤: 1. 将USART_CR1寄存器的UE置1来激活USART。 2. 编程USART_CR1的M位定义字长 3. 在USART_CR2中编写停止位的个数 4. 如果需多缓冲器通信,选择USART_CR3中的DMA使能位(DMAR)。按多缓冲器通信所

12、要求的配置DMA寄存器。 5. 利用波特率寄存器USART_BRR选择希望的波特率。 6. 设置USART_CR1的RE位。激活接收器,使它开始寻找起始位。 4.1.4.2 当一字符被接收到时, 1. RXNE位被置位。它表明移位寄存器的内容被转移到RDR。换句话说,数据已经被接收 并且可以被读出(包括与之有关的错误标志)。 2. 如果RXNEIE位被设置,产生中断。 3. 在接收期间如果检测到帧错误,噪音或溢出错误,错误标志将被置起, 4. 在多缓冲器通信时,RXNE在每个字节接收后被置起,并由DMA对数据寄存器的读操作而清零。 5. 在单缓冲器模式里,由软件读USART_DR寄存器完成对R

13、XNE位清除。RXNE标志也可以通过对它写0来清除。RXNE位必须在下一字符接收结束前被清零,以避免溢出错误。 注意: 在接收数据时,RE位不应该被复位。如果RE位在接收时被清零,当前字节的接收被丢失。 4.1.5 分数波特率的产生 接收器和发送器的波特率在USARTDIV的整数和小数寄存器中的值应设置成相同。 Tx / Rx 波特 fPCLKx /(16*USARTDIV)这里的fPCLKx(x=1、2)是给外设的时钟(PCLK1用于USART2、3、4、5,PCLK2用于USART1) USARTDIV是一个无符号的定点数。这12位的值设置在USART_BRR寄存器。 如何从USART_B

14、RR寄存器值得到USARTDIV 例1: 要求 USARTDIV = 25.62d, 就有: DIV_Fraction = 16*0.62d = 9.92d, 近似等于10d = 0x0A DIV_Mantissa = mantissa (25.620d) = 25d = 0x19 于是, USART_BRR = 0x19A 例2: 要求 USARTDIV = 50.99d 就有: DIV_Fraction = 16*0.99d = 15.84d =近似等于16d = 0x10 DIV_Mantissa = mantissa (50.990d) = 50d = 0x32 注意: 更新波特率寄存

15、器USART_BRR后,波特率计数器中的值也立刻随之更新。所以在通信进行时不应改变USART_BRR中的值。 表4-1-1 设置波特率的误差表 波特率 fPCLK = 36MHz fPCLK = 72MHz 序号 Kbps 实际 置于波特率 寄存器中的值 误差% 实际 置于波特率 寄存器中的值 误差% 1 2.4 2.400 937.5 0% 2.4 1875 0% 2 9.6 9.600 234.375 0% 9.6 468.75 0% 3 19.2 19.2 117.1875 0% 19.2 234.375 0% 4 57.6 57.6 39.0625 0% 57.6 78.125 0%

16、5 115.2 115.384 19.5 0.15% 115.2 39.0625 0% 6 230.4 230.769 9.75 0.16% 230.769 19.5 0.16% 7 460.8 461.538 4.875 0.16% 461.538 9.75 0.16% 8 921.6 923.076 2.4375 0.16% 923.076 4.875 0.16% 9 2250 2250 1 0% 2250 2 0% 10 4500 不可能 不可能 不可能 4500 1 0% 注: 1. CPU的时钟频率越低某一特定波特率的误差也越低 2. 只有USART1使用PCLK2(最高72MHz)

17、。其它USART使用PCLK1(最高36MHz)。 4.1.6 多处理器通信 通过USART可以实现多处理器通信(将几个USART连在一个网络里)。例如某个USART设备可以是主,它的TX输出和其他USART从设备的RX输入相连接;USART从设备各自的TX输出逻辑地与在一起,并且和主设备的RX输入相连接。 在多处理器配置中,通常希望只有被寻址的接收者才被激活,来接收随后的数据,这样就可以减少由未被寻址的接收器的参与带来的多余的USART服务开销。未被寻址的设备可启用其静默功能置于静默模式。在静默模式里: 1.任何接收状态位都不会被设置。 2.所有接收中断被禁止。 3.USART_CR1寄存器

18、中的RWU位被置1。RWU可以被硬件自动控制或在某个条件下由软件写入。 根据USART_CR1寄存器中的WAKE位状态,USART可以用二种方法进入或退出静默模式。 4.如果WAKE位被复位:进行空闲总线检测。 5.如果WAKE位被设置:进行地址标记检测。 空闲总线检测(WAKE=0) 当RWU位被写1时,USART进入静默模式。当检测到一空闲帧时,它被唤醒。然后RWU被硬件清零,但是USART_SR寄存器中的IDLE位并不置起。RWU还可以被软件写0。地址标记(address mark)检测(WAKE=1)。在这个模式里,如果MSB是1,该字节被认为是地址,否则被认为是数据。在一个地址字节中

19、,目标接收器的地址被放在4个LSB中。这个4位地址被接收器同它自己地址做比较,接收器的地址被编程在USART_CR2寄存器的ADD。 如果接收到的字节与它的编程地址不匹配时,USART进入静默模式。该字节的接收既不会置起RXNE标志也不会产生中断或发出DMA请求,因为USART已经在静默模式。 当接收到的字节与接收器内编程地址匹配时,USART退出静默模式。然后RWU位被清零,随后的字节被正常接收。匹配的地址字节将置位RXNE位,因为RWU位已被清零。 当接收缓冲器不包含数据时(USART_SR的RXNE=0),RWU位可以被写0或1。否则,该次写操作被忽略。 4.1.7 LIN(局域互联网)

20、模式 LIN模式是通过设置USART_CR2寄存器的LINEN位选择。在LIN模式下,下列位必须保持为0: 1. USART_CR2寄存器的CLKEN位 2. USART_CR3寄存器的STOP1:0,SCEN,HDSEL和IREN 4.1.7.1 LIN发送 LIN主发送和一般的串口发送基本相同,但和正常USART发送有以下区别: 1. 清零M位以配置8位字长 2. 置位LINEN位以进入LIN模式。这时,置位SBK将发送13位0作为断开符号。然后发一位1,以允许对下一个开始位的检测。 4.1.7.2 LIN接收 当LIN模式被使能时,断开符号检测电路被激活。该检测完全独立于USART接收器

21、。断开符号只要一出现就能检测到,不管是在总线空闲时还是在发送某数据帧其间,数据帧还未完成,又插入了断开符号的发送。 当接收器被激活时(USART_CR1的RE=1),电路监测RX上的起始信号。监测起始位的方法同检测断开符号或数据是一样的。当起始位被检测到后,电路对每个接下来的位,在每个位的第8,9,10个过采样时钟点上进行采样。如果10个(当USART_CR2 的LBDL = 0)或11个(当USART_CR2 的LBDL = 1)连续位都是0,并且又跟着一个定界符,USART_SR的LBD标志被设置。如果LBDIE位=1,中断产生。在确认断开符号前,要检查定界符,因为它意味RX线已经回到高电

22、平。 如果在第10或11个采样点之前采样到了1,检测电路取消当前检测并重新寻找起始位。如果LIN模式被禁止,接收器继续如正常USART那样工作,不需要考虑检测断开符号。 如果LIN模式没有被激活(LINEN=0),接收器仍然正常工作于USART模式,不会进行断开检测。 如果LIN模式被激活(LINEN=1),只要一发生帧错误(也就是停止位检测到0,这种情况出现在断开帧),接收器就停止,直到断开符号检测电路接收到一个1(这种情况发生于断开符号没有完整的发出来),或一个定界符(这种情况发生于已经检测到一个完整的断开符号)。 4.1.8 USART 同步模式 USART允许用户以主模式方式控制双向同

23、步串行通信。SCLK脚是USART发送器时钟的输出。在起始位和停止位期间,SCLK脚上没有时钟脉冲。根据USART_CR2寄存器中LBCL位的状态,决定在最后一个有效数据位期间产生或不产生时钟脉冲。USART_CR2寄存器的CPOL位允许用户选择时钟极性,USART_CR2寄存器上的CPHA位允许用户选择外部时钟的相位(见图4-1-1、图4-1-2和图4-1-3)。 在总线空闲期间,实际数据到来之前以及发送断开符号的时候,外部SCLK时钟不被激活。 同步模式时,USART发送器和异步模式里工作一模一样。但是因为SCLK是与TX同步的(根据CPOL和CPHA),所以TX上的数据是随SCLK同步发

24、出的。 同步模式的USART接收器工作方式与异步模式不同。如果RE=1,数据在SCLK上采样(根据CPOL和CPHA决定在上升沿还是下降沿),不需要任何的过采样。但必须考虑建立时间和持续时间(取决于波特率,1/16位时间)。 注意: 1SCLK脚同TX脚一起联合工作。因而,只有在发送器被激活(TE1),且数据被发送时(USART_DR寄存器被写入)才提供时钟。这意味着在没有发送数据时是不可能接收一个同步数据的。 2LBCL,CPOL和CPHA位的正确配置,应该在发送器和接收器都被禁止时;当发送器或接收器被激活时,这些位不能被改变 3建议在同一条指令中设置TE和RE,以减少接收器的建立时间和保持

25、时间。 4USART只支持主模式:它不能用来自其他设备的输入时钟接收或发送数据(SCLK永远是输出)。 图4-1-1 USART同步传输的例图4-1-2 USART数据时钟时序示例(M=0) 图4-1-3 USART数据时钟时序示例(M=1)4.1.9 单线半双工通信 USART可以配置成遵循单线半双工协议。使用控制位“HALF DUPLEX SEL”选择半双工和全双工通信。当HDSEL写1时 1. RX不再被使用 2. 当没有数据传输时,TX总是被释放。因此,它在空闲状态的或接收状态时表现为一个标准I/O口。这就意味该I/O在不被USART驱动时,必须配置成悬空输入(或开漏的输出高)。除此以

26、外,通信与正常USART模式类似。由软件来管理线上的冲突(例如通过使用一个中央仲裁器)。特别的是,发送从不会被硬件所阻碍。当TE位被设置时,只要数据一写到数据寄存器上,发送就继续。 4.1.10 智能卡 设置USART_CR3寄存器的SCEN位选择智能卡模式。在智能卡模式下,下列位必须保持清零: 1. USART_CR2寄存器的LINEN位 2. USART_CR3寄存器的HDSEL 位和IREN位 此外,CLKEN位可以被设置,以提供时钟给智能卡。智能卡接口设计成ISO7816-3标准所定义的那样支持异步协议的智能卡。USART应该被设置为: 8位数据位加校验位: 此时USART_CR1寄存

27、器M=1,PCE=1,并且下列条件满足其一: 1接收时0.5个停止位:即USART_CR2寄存器的STOP=01 2发送时1.5个停止位:即USART_CR2寄存器的STOP=11 图4-1-4给出的例子说明了数据线上,在有校验错误和没校验错误两种情况下的信号。 图4-1-4 ISO7816-3异步协议 当与智能卡相连接时,USART的TX驱动一根智能卡也驱动的双向线。为了做到这点,SW_RX必须和TX连接到相同的I/O口。在发送开始位和数据字节期间,发送器的输出使能位TX_EN被置起,在发送停止位期间被释放(弱上拉),因此在发现校验错误的情况下接收器可以将数据线拉低。如果TX_EN不被使用,

28、在停止位期间TX被拉到高电平:这样的话,只要TX配置成开漏,接收器也可以驱动这根线。 智能卡是一个单线半双工通信协议 1. 从发送移位寄存器把数据发送出去,要被延时最小1/2波特时钟。在正常操作时,一个满的发送移位寄存器将在下一个波特时钟沿开始向外移出数据。在智能卡模式里,此发送被延迟1/2波特时钟。 2. 如果在接收数据帧期间,检测到一校验错误,该帧接收完成后(也就是在0.5停止位结束时),发送线被拉低一个波特时钟周期。这是告诉智能卡发送到USART的数据没有被正确接收到。此NACK信号(拉低发送线一个波特时钟周期)在发送端将产生一个帧错误(发送端被配置成1.5个停止位)。应用程序可以根据协

29、议处理重新发送的数据。如果NACK控制位被设置,发生校验错误时接收器会给出一个NACK信号;否则就不会发送NACK。 3. TC标志的置起可以通过编程保护时间寄存器得以延时。在正常操作时,当发送移位寄存器变空并且没有新的发送请求出现时,TC被置起。在智能卡模式里,空的发送移位寄存器将触发保护时间计数器开始向上计数,直到保护时间寄存器中的值。TC在这段时间被强制拉低。当保护时间计数器达到保护时间寄存器中的值时,TC被置高。 4. TC标志的撤销不受智能卡模式的影响。 5. 如果发送器检测到一个帧错误(收到接收器的NACK信号),发送器的接收功能模块不会把NACK当作起始位检测。根据ISO协议,接

30、收到的NACK的持续时间可以是1或2波特时钟周期。 6. 在接收器这边,如果一个校验错误被检测到,并且NACK被发送,接收器不会把NACK检测成起始位。 注意:1. 断开符号在智能卡模式里没有意义。一个带帧错误的00h数据将被当成数据而不是断开符号。 2. 当来回切换TE位时,没有IDLE帧被发送。ISO协议没有定义IDLE帧。 在这个例子里,USART正在发送数据,并且被配置成1.5个停止位。为了检查数据的完整性和NACK信号,USART的接收功能块被激活。 USART可以通过SCLK输出为智能卡提供时钟。在智能卡模式里,SCLK不和通信直接关联,而是先通过一个5位预分频器简单地用内部的外设

31、输入时钟来驱动智能卡的时钟。分频率在预分频寄存器USART_GTPR中配置。SCLK频率可以从fCK/2到fCK/62,这里的fCK是外设输入时钟。 4.1.11 IrDA SIR ENDEC 功能块 IrDA SIR物理层规定使用反相归零调制方案(RZI),该方案用一个红外光脉冲代表逻辑0(见图4-5)。SIR发送编码器对从USART输出的NRZ(非归零)比特流进行调制。输出脉冲流被传送到一个外部输出驱动器和红外LED。USART为SIR ENDEC最高只支持到115.2Kbps速率。在正常模式里,脉冲宽度规定为一个位周期的3/16。 SIR接收解码器对来自红外接收器的归零位比特流进行解调,

32、并将接收到的NRZ串行比特流输出到USART。在空闲状态里,解码器输入通常是高(标记状态marking state)。发送编码器输出的极性和解码器的输入相反。当解码器输入低时,检测到一个起始位。 IrDA是一个半双工通信协议。如果发送器忙(也就是USART正在送数据给IrDA编码器),IrDA接收线上的任何数据将被IrDA解码器忽视。如果接收器忙(也就是USART正在接收从IrDA解码器来的解码数据),从USART到IrDA的TX上的数据将不会被IrDA编码。当接收数据时,应该避免发送,因为将被发送的数据可能被破坏。 SIR发送逻辑把0作为高电平发送,把1作为低电平发送。脉冲的宽度规定为正常模

33、式时位周期的3/16(见图4-1-6)。 SIR接收逻辑把高电平状态解释为1,把低脉冲解释为0。发送编码器输出与解码器输入有着相反的极性。当空闲时,SIR输出处于低状态。SIR解码器把IrDA兼容的接收信号转变成给USART的比特流。 IrDA规范要求脉冲要宽于1.41us。脉冲宽度是可编程的。接收器端的尖峰脉冲检测逻辑滤除宽度小于2个PSC周期的脉冲(PSC是在IrDA低功耗波特率寄存器USART_GTPR中编程的预分频值)。宽度小于1个PSC周期的脉冲一定被滤除掉,但是那些宽度大于1个而小于2个PSC周期的脉冲可能被接收或滤除,那些宽度大于2个周期的将被视为一个有效的脉冲。当PSC=0时,

34、IrDA编码器/解码器不工作。 接收器可以与一低功耗发送器通信。在IrDA模式里,USART_CR2寄存器上的STOP位必须配置成1个停止位。 IrDA低功耗模式 发送器 :在低功耗模式,脉冲宽度不再持续3/16个位周期。取而代之,脉冲的宽度是低功耗波特率的3倍,它最小可以是1.42MHz。通常这个值是1.8432MHz(1.42 MHz PSC USART_BaudRate) FractionalDivider = (IntegerDivider - (u32) IntegerDivider) * 16) + 0.5该成员值,不一定要是9600、14400、19200、38400、57600

35、等值,可以是任意值。2USART_WordLength USART_WordLength 提示了在一个帧中传输或者接收到的数据位数。表4-2-2给出了该参数可取的值。 表 4-2-2 USART_WordLength成员的值USART_WordLength成员的值描述USART_WordLength_8b 8 位数据USART_WordLength_9b 9 位数据3USART_StopBits USART_StopBits定义了发送的停止位数目。表4-2-3给出了该参数可取的值。 表 4-2-3 USART_StopBits成员的值 USART_StopBits成员的值描述USART_Sto

36、pBits_1在帧结尾传输 1 个停止位USART_StopBits_0.5在帧结尾传输 0.5 个停止位USART_StopBits_2在帧结尾传输 2 个停止位USART_StopBits_1.5在帧结尾传输 1.5 个停止位 4USART_Parity USART_Parity定义了奇偶校验模式。表4-2-4给出了该参数可取的值。 表4-2-4 USART_Parity成员可取的值USART_Parity成员可取的值描述USART_Parity_No无校验USART_Parity_Even偶校验模式USART_Parity_Odd奇校验模式 注意:奇偶校验一旦使能,在发送数据的 MSB

37、位插入经计算的奇偶位(字长 9 位时的第 9 位,字长 8 位时的第 8 位) 。 5USART_HardwareFlowControl USART_HardwareFlowControl 指定了硬件流控制模式使能还是失能。表4-2-5给出了该参数可取的值。 表 4-2-5 USART_HardwareFlowControl成员可取的值USART_HardwareFlowControl成员可取的值描述USART_HardwareFlowControl_None没有流量控制USART_HardwareFlowControl_RTS发送请求 RTS使能USART_HardwareFlowContr

38、ol_CTS清除发送 CTS使能USART_HardwareFlowControl_RTS_CTSRTS和 CTS使能 6USART_Mode USART_Mode 指定了使能或者失能发送和接收模式。表4-2-6给出了该参数可取的值。 表 4-2-6 USART_Mode成员可取的值USART_Mode成员可取的值描述USART_Mode_Tx 发送使能USART_Mode_Rx 接收使能例:异步串口1,速率19200,8位数据,一个停止位,无校验,无流量控制,接收发送使能。USART_InitTypeDef USART_InitStructure; /定义结构体USART_InitStructure.USART_BaudRate = 9600; /设定通讯速率USART_InitStructure.USART_WordLength = USART_WordLength_8b; /8位数据USART_InitStructure.USART_StopBits = USART_StopBits_1; /一个停止位USART_InitStructure.USART_Parity = USART_Parity_No; /无校验位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号