复习STM32 的串口

在STM32里面,串口及中断可以说是一个十分基础及重要的知识,只有熟练的掌握了串口及中断,才能更近一步了解STM32.
串口的设置一般分为一下几个部分:
*1.*串口的时钟使能与GPIO的时钟使能:
串口时钟的使能:
在STM32里面,通过查阅参考手册,串口1的使能使能在APB2 外设时钟使能寄存器里面,其他串口的使能在APB1外设时钟使能寄存器中实现。(以串口1为例)
在这里插入图片描述
这个函数里面有两个变量,第一个就是我们要使能的是什么?(因为在APB2 外设时钟使能寄存器中,每一个位的不同,便对应着不同外设的使能)如下图所述:
在这里插入图片描述
这里我们只要选择RCC_APB2Periph_USART1 就行了,第二个变量就是我们关于它是否使能的问题,若是使能,选择ENABLE,若不使能,选择DISABLE。
在这里插入图片描述
设置好了之后,我们便能在我们所需要的函数中使用串口使能函数,如下图所示:
在这里插入图片描述
(GPIO的时钟使能也类似,我们想知道函数相应的参数问题,只需要找到在我们需要用到的函数点击右键,选择Go to definition of “…”,便可以获取到其相应的参数(前提是我们已经定义了这个函数,以及把它放入到我们的工程之中))
*2.*串口的复位(非必须):
我们复位串口所需要的函数为USART_DeInit();
在这里插入图片描述其包含的结构体如下图所示:
在这里插入图片描述
我们只需要根据相应的步骤来选择便能够实现串口的复位了,因为不是必要的,就没有写的那么详细了。
*3.*GPIO的模式设置:
GPIO的模式设置,首先我们先要调用的是GPIO_Init();这个函数。
在这里插入图片描述
这个函数在STM32F1xx固件库中也是含还有的,想深入了解可以去看看,在固件库中
其实第一个变量就是选择我们做需要的GPIO口;
第二个变量是一个结构体:
在这里插入图片描述
从上到下分别定义了我们所需要的GPIO的引脚,速度以及他的模式。选择参数的方法也是跟上面的例子是一样的,使用的时候我们必须可以定义一个结构体变量,在逐个设置结构体中的每个参数的对应模式,引脚和速度等。
在这里插入图片描述
这里面直接设置的模式为复用推挽,引脚为9,它的速度为10MHz,最后在GPIO_Init()中表明是那一组GPIO口,以及用取地址符把我们设置好的结构体变量的地址给写上去。
4串口参数的初始化:
串口参数的初始化整体上的思路跟GPIO 的初始化时一样的,不过我们在这里调用的是
USART_Init()函数,在这里插入图片描述
第一个参数便是选择我们所需要的串口名称,这里我用的是USART1,第二个参数定义了一个结构体:
在这里插入图片描述
此结构体从上到下依次定义了我们串口的波特率、字长(可以是8位或9位)、停止位、奇偶校验位(奇校验还是偶校验还是不使用)、发送接收使能、硬件流控制。
例如:
在这里插入图片描述
这里先定义一个结构体变量,然后设置它的波特率为115200,不使用硬件流,设置发射和接受使能,不使用奇偶校验,停止位为1,字长为8。最后在USART_Init()中设置我们的串口位,和我们设置好结构体变量的地址。
*5.*开启中断并且初始化NVIC(嵌套向量中断控制器)
(若需要开启中断才需要这个步骤)我们这里需要用到的函数为
在这里插入图片描述
第一个函数为设置中断的优先级(抢占与响应优先级),
第二个函数为我们到底要开启什么中断

函数:

在这里插入图片描述
此函数有三个变量,分别为设置哪一个串口,以及他的功能,最后一个是否使能。这里设置的是串口1,设置为缓冲区非空,打开。
在这里插入图片描述
此函数为中断优先级的分组。
函数:
在这里插入图片描述
第一个是指哪一个通道,这里选择串口1
第二个是指开不开启这个通道,这里选择开启
第三个是指设置抢占优先级,这里设为1
第四个是指优先级,这里设为1
*6.*使能串口
函数USART_Cmd()为使能串口,如:
USART_Cmd(USART1,ENABLE);//这里便是使能串口1;
*7.*编写中断函数

USART1_IRQHandler();//串口 1 的中断服务函数。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值