STM32学习之串口USART.doc

上传人:豆**** 文档编号:33462162 上传时间:2022-08-11 格式:DOC 页数:5 大小:125.50KB
返回 下载 相关 举报
STM32学习之串口USART.doc_第1页
第1页 / 共5页
STM32学习之串口USART.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《STM32学习之串口USART.doc》由会员分享,可在线阅读,更多相关《STM32学习之串口USART.doc(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流STM32学习之串口USART【精品文档】第 5 页STM32学习之串口USARTSTM32 的串口是相当丰富的。最多可提供5路串口,有分数波特率发生器、支持单线光通信和半双工单线通讯、支持LIN、智能卡协议和IrDA SIR ENDEC 规范(仅串口3 支持)、具有DMA 等。串口最基本的设置,就是波特率的设置。STM32 的串口使用起来还是蛮简单的,只要你开启了串口时钟,并设置相应 IO口的模式,然后配置一下波特率,数据位长度,奇偶校验位等信息,就可以使用了。1、串口时钟使能。串口作为STM32 的一个外设,其时钟由外设始终使能寄存器控制,这里我们使

2、用的串口1是在APB2ENR 寄存器的第 14 位。除了串口 1 的时钟使能在APB2ENR寄存器,其他串口的时钟使能位都在APB1ENR。1、串口的作用:用在STM32板子和PC机通信的。我们调试的时候,无法知道是否正确,就可以用STM32的cpu,给串口输出一些信息给PC,我们通过屏幕(实际上是终端串口软件),可以看到这些信息,从而知道当前程序的错误可能出现的位置。当然,也可以在PC的键盘敲打命令,让串口帮传递给STM32板子,来执行这些命令。2、串口的工作模式一般有两种方式:查询和中断(1)查询:串口程序不断地循环查询,看看当前有没有数据要它传,如果有,就帮助传送(可以从PC到STM32

3、板子,也可以从STM32 板子到PC)。 (2)中断:平时串口只要打开中断即可。如果发现有一个中断来,则意味着要它帮助传输数据它就马上进行数据的传送。同样,可以从PC到STM32板子,也可以从STM32板子到PC 。步骤一 从硬件开始学习。大家先打开芯达STM32开发板附带的原理图。找到串口部分。笔者把它截图如下。我们发现,串口模块的电路是这样的:STM32的CPU引脚,通过两个PA端口的引脚PA10和PA9(此两个引脚复用USART),连接到一个SP3232芯片,或者MAX232芯片。然后再连接到DB9串口座上。由于232芯片可以允许走两路信号,因此,我们扩展了一个串口COM2,请注意,如无

4、特别说明,我们都将使用COM1。 SP3232EEN芯片能帮助把数据信号转换成电脑232接口能识别的信号。其转换是自动进行的。因此,我们只需要把要发送的数据送给引脚PA9,然后再串口座的引脚3上去接收数据即可。反之,接收数据也是一样。步骤二 初始化串口。 打开STM32F103xxx参考手册与STM32固件库使用手册。我们的思路和之前一样,根据固件库使用手册中给出的步骤来配置串口。1、要声明一个结构: GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDefUSART_InitStructure; 这里顺便也声明了GPIO的结构。原因是:串口

5、是需要使用IO口来进行发送和接收的。 2、设置该结构中的成员: 串口的结构成员设置如下: USART_StructInit(&USART_InitStructure); 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_InitSt

6、ructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None; GPIO结构的成员设置如下: GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOA,&GPIO_InitStructur

7、e); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStructure);3、调用函数x xx_Init()来初始化外设(包括IO和USART):USART的初始化函:USART_Init(USART1,&USART_InitStructure); 由于GPIO的外设初始化已经放在成员设置后面,因此这里没有列出来。4、调用xxx_Cmd(xxx,ENABLE);函数来使能外设。 这里只需要使能USART

8、即可。GPIO的固件中,没有使能即可使用。USART_Cmd(USART1,ENABLE);由于本文档使用的是中断方式来触发串口收发数据,因此,我们在使能串口之前,也把发送和接收的中断使能打开: USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); USART_ITConfig(USART1,USART_IT_TXE,ENABLE);5、别忘了加上外设的时钟使能哈 GPIOA和USART都在APB2上。因此我们调用的函数如下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|

9、RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE,ENABLE);步骤三 操作串口收发数据 芯达STM32的思路是:首先让STM32的CPU发送一些欢迎信息,从串口打印出来。然后接收中断,该中断来自键盘输入。只要键盘输入一个字符,即打印出该字符,从而验证串口编程是否成功。固件库的函数如何让串口发送和接收数据呢?它给我们提供了两个函数:USART_SendData(); 省略函数参数 USART_ReceiveData(); 先来看发送。我们的程序在初始化串口之后,马上就会打印欢

10、迎信息。也就是从STM32的CPU发送信息,在电脑屏幕上显示出来,只要如下操作即可:/*=USART打印欢迎信息=*/ for(i=0;TxBuf1i!=0;i+) USART_SendData(USART1,TxBuf1i); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)=RESET); TxBuf1是一个发送缓存。我们事先把数据放在这个数组里了: unsignedcharTxBuf1100=这里可以自定义需要输出到串口的字符; 这里要注意的是,当我们发送一个字符后,必须查看状态标志,这里是发送是否完成的标志:USART_FLAG_TC,如果

11、发送完成了,则才可以发送下一个数据。函数USART_GetFlagStatus();就是用来做这个判断的。下面开始另外一个操作:键盘输入什么字符,就得显示什么字符。我们的代码如下: while(1) GPIO_SetBits(GPIOE,GPIO_Pin_1); RX_status=USART_GetFlagStatus(USART1,USART_FLAG_RXNE); if(RX_status=SET)USART_SendData(USART1,USART_ReceiveData(USART1); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)

12、=RESET); GPIO_ResetBits(GPIOE,GPIO_Pin_1); Delay(0xFFFFF); 先判断接收的状态标志USART_FLAG_RXNE,如果接收的寄存器非 空,说明已经接收到键盘发送来的数据,于是就把这个数据从接收缓存中取出来,发送给电脑。这样电脑就可以看到刚才敲入的字符了。 USART_ReceiveData(USART1);这个函数是从接收缓存取出数据。 我们在这个while中,还加入了GPIO的函数: GPIO_SetBits(GPIOC,GPIO_Pin_0); GPIO_ResetBits(GPIOC,GPIO_Pin_0); 这两个函数,SetBits,表示对GPIOC端口的第0个引脚置1。ResetBits,清零。由于芯达STM32开发板上,GPIOC端口上的第0引脚连着一个LED灯,所以,我们可以通过观察LED灯是否闪烁来判断串口是否正在发送。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com