推荐第九章USART-STM32_第1页
推荐第九章USART-STM32_第2页
推荐第九章USART-STM32_第3页
推荐第九章USART-STM32_第4页
推荐第九章USART-STM32_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第九章第九章 stm32 外设接口模块外设接口模块9.1 usart 模块模块usart是universal synchronous/asynchronous receiver/transmitter的简称,翻译成中文即为:通用同步/异步串行接收/发送器;它具有全双工通用同步/异步串行收发能力;该接口是一个高度灵活的串行通信设备;stm32的usart模块分usart、uart两种:大容量stm32f103,有多达5个串口,前三个为usart,后两个则为uart,即:usart1,usart2,usart3,以及uart4、uart59.1 usart 模块模块usart 收发模块一般分为三大

2、部分:收发模块一般分为三大部分:时钟发生器、数据发送器和接收器时钟发生器、数据发送器和接收器。控制。控制寄存器为所有的模块共享。寄存器为所有的模块共享。时钟发生器时钟发生器由同步逻辑电路和波特率发生器组成。发送时钟引脚由同步逻辑电路和波特率发生器组成。发送时钟引脚 xck 仅用于同仅用于同步发送模式下。步发送模式下。发送器部分发送器部分由一个单独的写入缓冲器、一个串行移位寄存器、校验位发生器和用由一个单独的写入缓冲器、一个串行移位寄存器、校验位发生器和用于处理不同帧结构的控制逻辑电路构成。于处理不同帧结构的控制逻辑电路构成。接收器接收器是是 usart 模块最复杂的部分,最主要的是时钟和数据接

3、收单元,此外还模块最复杂的部分,最主要的是时钟和数据接收单元,此外还包括校验位校验器、控制逻辑、移位寄存器和两级接收缓冲器。包括校验位校验器、控制逻辑、移位寄存器和两级接收缓冲器。接收器支持与发送器相同的帧结构,同时支持帧错误、数据溢出和校验错误的检接收器支持与发送器相同的帧结构,同时支持帧错误、数据溢出和校验错误的检测,并实现了连续发送多帧数据无延时的通信。测,并实现了连续发送多帧数据无延时的通信。数据接收单元用作异步数据的接收。数据接收单元用作异步数据的接收。9.1.1 usart 功能概述功能概述通用同步异步收发器(通用同步异步收发器( usart)提供了一种灵活的方法来与使用工业标准)

4、提供了一种灵活的方法来与使用工业标准nrz异步串行数据格式的异步串行数据格式的外部设备之间进行全双工数据交换外部设备之间进行全双工数据交换。它支持同步一路通信和半双工的单线通信,它支持同步一路通信和半双工的单线通信,lin,智能卡协议,智能卡协议,irda和调制解调和调制解调器操作(器操作( cts/rts);允许多处理器通信,可以进行高速的数据通信。);允许多处理器通信,可以进行高速的数据通信。任何任何usart双向通信都至少需要两个引脚:接收数据输入(双向通信都至少需要两个引脚:接收数据输入( rx)和发送数据输)和发送数据输出(出( tx)。)。rx:串行数据输入。:串行数据输入。tx:

5、发送数据输出。当发送器使能的时候并且没有数据要发送,:发送数据输出。当发送器使能的时候并且没有数据要发送,tx引脚是高电引脚是高电平。平。stm32 外设接口模块外设接口模块在同步模式中需要下列引脚: sclk: 发送器时钟输出。在irda模式中需要下列引脚: irda_rdi:irda模式下的数据输入。 irda_tdo: irda模式下的数据输出。在调制解调器模式中需要下列引脚: ncts: 清除发送 nrts: 发送请求tx:发送数据输出引脚。:发送数据输出引脚。rx:接收数据输入引脚。:接收数据输入引脚。sw_rx:数据接收引脚,只用于单线和智能卡模式,属于内部:数据接收引脚,只用于单

6、线和智能卡模式,属于内部引脚,没有具体外部引脚。引脚,没有具体外部引脚。nrts:请求以发送:请求以发送(request to send),n 表示低电平有效。表示低电平有效。ncts:清除以发送:清除以发送(clear to send),n 表示低电平有效。表示低电平有效。sclk:发送器时钟输出引脚。这个引脚仅适用于同步模式。:发送器时钟输出引脚。这个引脚仅适用于同步模式。usart 数据寄存器数据寄存器(usart_dr)只有低只有低 9 位有效;位有效;usart_dr 包含了已发送的数据或者接收到的数据。包含了已发送的数据或者接收到的数据。usart_dr 实际是包含了两个寄存器,一

7、个专门用于发送的可实际是包含了两个寄存器,一个专门用于发送的可写写 tdr,一个专门用于接收的可读,一个专门用于接收的可读 rdr。usart 有专门控制发送的发送器、控制接收的接收器,还有唤有专门控制发送的发送器、控制接收的接收器,还有唤醒单元、中断控制等等。醒单元、中断控制等等。发送或接受遵循一定的格式和协议。发送或接受遵循一定的格式和协议。波特率指数据信号对载波的调制速率,它用单位时间内载波调波特率指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示,单位为波特。制状态改变次数来表示,单位为波特。比特率指单位时间内传输的比特数,单位比特率指单位时间内传输的比特数,单位 b

8、it/s(bps)。对于对于 usart 波特率与比特率相等,以后不区分这两个概念。波特率与比特率相等,以后不区分这两个概念。波特率越大,传输速率越快。波特率越大,传输速率越快。usart 的发送器和接收器使用相同的波特率。的发送器和接收器使用相同的波特率。9.1.1 usart 功能概述功能概述通过这些引脚,在正常通过这些引脚,在正常usart模式下,串行数据作为帧发送和接收。包括:模式下,串行数据作为帧发送和接收。包括: 总线在发送或接收前应处于空闲状态总线在发送或接收前应处于空闲状态 一个起始位一个起始位 一个数据字(一个数据字( 8位或者位或者9位),最低有效位在前位),最低有效位在前

9、 0.5、1/1.5、2个停止位,由此表明数据帧的结束。个停止位,由此表明数据帧的结束。 使用分数波特率产生器使用分数波特率产生器带带12位整数和位整数和4位小数位小数 一个状态寄存器一个状态寄存器(usart_sr) 数据寄存器数据寄存器(usart_data) 波特率寄存器波特率寄存器(usart_brr) 带带12位尾数和位尾数和4位小数位小数 智能卡模式下的保护时间寄存器(智能卡模式下的保护时间寄存器( usart_gtpr)9.1.2 usart寄存器简介寄存器简介串口最基本的设置,就是波特率的设置。串口最基本的设置,就是波特率的设置。stm32stm32的串口使用起来的串口使用起来

10、非常简单的,只要开启了串口时钟,并设置相应非常简单的,只要开启了串口时钟,并设置相应ioio口的模式,然口的模式,然后配置一下波特率,数据位长度,奇偶校验位等信息,就可以使后配置一下波特率,数据位长度,奇偶校验位等信息,就可以使用了。用了。波特率计算:波特率计算:假设:假设:fck=72mhzfck=72mhz,欲设置,欲设置96009600的波特率,则有:的波特率,则有: usartdiv=720000/(9600 usartdiv=720000/(9600* *16)=468.7516)=468.75 则:整数部分则:整数部分div_mantissa=468=0 x1d4; (12div_

11、mantissa=468=0 x1d4; (12位二进制数位二进制数) ) 小数部分小数部分div_fraction=16div_fraction=16* *0.75=12=0 xc; (40.75=12=0 xc; (4位二进制数位二进制数) ) div=0 x1d4cdiv=0 x1d4c;stm32 外设接口模块外设接口模块串口设置一般可以总结为如下几个步骤:串口设置一般可以总结为如下几个步骤:1、串口时钟使能(、串口时钟使能(usart 1用用apb2时钟),时钟), gpio 时钟使能时钟使能(apb2)2、串口复位、串口复位 usart_deinit(usart1) 3 3、gpi

12、ogpio端口模式设置端口模式设置 (pa9、pa10)4 4、串口参数初始化、串口参数初始化 (波特率、数据位、停止位、校验位等波特率、数据位、停止位、校验位等)5 5、开启中断并且初始化、开启中断并且初始化 nvicnvic(如果需要开启中断才需要这个步(如果需要开启中断才需要这个步骤)骤) 6 6、使能串口、使能串口 usrrt_cmd(usart1, enable)7 7、编写中断处理函数、编写中断处理函数stm32 外设接口模块外设接口模块实验用电路板串口电路原理图1.硬件连接 电路硬件连接如下图 所示。stm32 外设接口模块外设接口模块2.软件编程步骤(查询法)步骤一:添加库函数

13、,编写用户函数。步骤二:系统时钟配置。 main.c文件中systeminit()函数配置系统时钟为72m。步骤三:串口初始化。步骤四:串口数据输出。步骤五:打开串口调试助手。void usart1_init(void) gpio_inittypedef gpio_initstructure; usart_inittypedef usart_initstructure; rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_usart1, enable); gpio_initstructure.gpio_pin = gpio_pi

14、n_9; gpio_initstructure.gpio_mode = gpio_mode_af_pp; gpio_initstructure.gpio_speed = gpio_speed_50mhz; gpio_init(gpioa,&gpio_initstructure);/ pa9复用推挽输出复用推挽输出 txd引脚引脚 gpio_initstructure.gpio_pin = gpio_pin_10; gpio_initstructure.gpio_mode = gpio_mode_in_floating; gpio_init(gpioa,&gpio_initstr

15、ucture); / pa10复用浮空输入复用浮空输入 rxd引脚引脚 usart_initstructure.usart_baudrate = 115200;/ 波特率设置波特率设置 usart_initstructure.usart_wordlength = usart_wordlength_8b;/数据位数据位 usart_initstructure.usart_stopbits = usart_stopbits_1;/停止位停止位 usart_initstructure.usart_parity = usart_parity_no;/校验位校验位 usart_initstructure

16、.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none;/ usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx;/使能发送与接收使能发送与接收 usart_init(usart1,&usart_initstructure); /初始化初始化usart1 usart_cmd(usart1,enable);/打开串口打开串口#include stm32f10 x.h“#include usart.h“u8 ch;int i=0;int main(void

17、) systeminit(); usart1_init(); while(1) while(usart_getflagstatus(usart1,usart_flag_rxne) = reset); ch = usart_receivedata(usart1); while(usart_getflagstatus(usart1,usart_flag_txe) = reset); usart_senddata(usart1,ch); 中断配置(采用中断方式是时需设置)中断配置(采用中断方式是时需设置)void usart1_itconfig(void) nvic_inittypedef nvic

18、_initstructure; rcc_apb2periphclockcmd(rcc_apb2periph_afio,enable);/第二功第二功能时钟开启能时钟开启 nvic_initstructure.nvic_irqchannel = usart1_irqn;/ nvic_initstructure.nvic_irqchannelpreemptionpriority = 1;/ nvic_initstructure.nvic_irqchannelsubpriority = 1;/ nvic_initstructure.nvic_irqchannelcmd = enable;/ nvic_init(&nvic_initstructure); usart_itconfig(usart1,usart_it_rxne,enable);中断方式下的串口中断方式下的串口1中断程序中断程序void usart1_irqhandler(void) static u8 ch; if(usart_getitstatus(usart1, usart_it_rxne) != reset) ch = usart_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论