STM32单片机串口实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

STM32串口实验具体实例分析3串口的配置使用2STM32串口介绍12020/1/10蔡兴广串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIRENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。还可以使用DMA方式,实现高速数据通信。STM32串口介绍1USART通过3个引脚与其他设备连接在一起RX:接受数据串行输入。通过过采样技术来区别数据和噪音,从而恢复数据。TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。STM32F103ZET6。利用的串口接口为COM1,常用2,3,5引脚,和电脑间的通信通过USB转串口线进行通讯。串口的配置使用2一般有两种方式:查询和中断。(1)查询:串口程序不断地循环查询,看看当前有没有数据要它传送。如果有,就帮助传送。(2)中断:平时串口只要打开中断即可。如果发现有一个中断来,则意味着要它帮助传输数据——它就马上进行数据的传送。如何工作?如何配置?串口设置的一般步骤可以总结为如下几个步骤:1)串口时钟使能,GPIO时钟使能2)串口复位3)GPIO端口模式设置4)串口参数初始化5)开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)6)使能串口7)编写中断处理函数1、串口时钟使能。串口作为STM32的一个外设,其时钟由外设时钟使能寄存器控制,这里我们使用的串口1是在APB2ENR寄存器的第14位。除了串口1的时钟使能在APB2ENR寄存器,其他串口的时钟使能位都在APB1ENR。RCC_APB2ENRRCC_APB1ENR2、串口复位。当外设出现异常的时候可以通过复位寄存器里面的对应位设置,实现该外设的复位,然后重新配置这个外设达到让其重新工作的目的。一般在系统刚开始配置外设的时候,都会先执行复位该外设的操作。串口1的复位是通过配置APB2RSTR寄存器的第14位来实现的。APB2RSTR寄存器的各位描述如下:3、串口波特率设置。每个串口都有一个自己独立的波特率寄存器USART_BRR,通过设置该寄存器达到配置不同波特率的目的。该寄存器的各位描述如下:《STM32中文参考手册V10》P524讲解了波特率和DIV_Mantissa以及DIV_Fraction的计算公式:故BRR设置为0X1D4C即可使得波特率设置为9600。4、串口控制。STM32的每个串口都有3个控制寄存器USART_CR1~3,串口的很多配置都是通过这3个寄存器来设置的。这里我们只要用到USART_CR1就可以实现我们的功能了。5、数据发送与接收。STM32的发送与接收是通过数据寄存器USART_DR来实现的,这是一个双寄存器,包含了TDR和RDR。当向该寄存器写数据的时候,串口就会自动发送,当收到收据的时候,也是存在该寄存器内。该寄存器的各位描述如下:6、串口状态。串口的状态可以通过状态寄存器USART_SR读取。USART_SR的各位描述如下:具体实例分析3依照以上步骤,在安富莱-V3的板子上以实现串口通信的实验。1、串口时钟使能:串口是挂载在APB2下面的外设RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1);2、串口复位:当外设出现异常的时候可以通过复位设置voidUSART_DeInit(USART_TypeDef*USARTx)对串口1复位方法为:USART_DeInit(USART1);3、串口参数初始化:串口初始化是通过USART_Init()函数实现的,设置波特率、停止位、校验位、位长等。voidUSART_Init(USART_TypeDef*USARTx,USART_InitTypeDef*USART_InitStruct);4数据发送与接收。STM32USART_DR寄存器发送数据的函数是:voidUSART_SendData(USART_TypeDef*USARTx,uint16_tData);通过该函数向串口寄存器USART_DR写入一个数据。STM32USART_DR寄存器读串口接收到的数据的函数是:uint16_tUSART_ReceiveData(USART_TypeDef*USARTx);通过该函数可以读取串口接受到的数据。5、串口状态:读取串口状态的函数是:FlagStatusUSART_GetFlagStatus(USART_TypeDef*USARTx,uint16_tUSART_FLAG);6、串口使能:串口使能是通过函数USART_Cmd()来实现的:USART_Cmd(USART1,ENABLE);

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功