您的位置 首页 解答

STM32单片机的复用端口初始化的过程及办法

STM32单片机的复用端口初始化的步骤及方法-STM32有好几个串口。比如说STM32F103ZET6有5个串口,串口1的引脚对应的IO为PA9,PA10.PA9,PA10默认功能是GPIO,所以当PA9,PA10引脚作为串口1的TX,RX引脚使用的时候,那就是端口复用。

STM32有好几个串口。比方说STM32F103ZET6有5个串口,串口1的引脚对应的IO为PA9,PA10.PA9,PA10默许功用是GPIO,所以当PA9,PA10引脚作为串口1的TX,RX引脚运用的时分,那便是端口复用。

复用端口初始化有几个进程:

1) GPIO端口时钟使能。要运用到端口复用,当然要使能端口的时钟了。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

2) 复用的外设时钟使能。比方你要将端口PA9,PA10复用为串口,所以要使能串口时钟。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

3) 端口形式装备。 在IO复用位内置外设功用引脚的时分,有必要设置GPIO端口的形式,至于在复用功用下GPIO的形式是怎样对应的,这个能够检查手册。

所以,咱们在运用复用功用的是时分,最少要使能2个时钟:

1) GPIO时钟使能 ;2) 复用的外设时钟使能 一起要初始化GPIO以及复用外设功用

串口设置的一般进程能够总结为如下几个进程:

1) 串口时钟使能,GPIO时钟使能

2) 串口复位

3) GPIO端口形式设置

4) 串口参数初始化

5) 敞开中止而且初始化NVIC(假如需求敞开中止才需求这个进程)

6) 使能串口

7) 编写中止处理函数

端口重映射:(暂略)

中止量操控:

STM32有84个中止,包含16个内核中止和68个可屏蔽中止,具有16级可编程的中止优先级。而咱们常用的便是这68个可屏蔽中止,可是STM32的68个可屏蔽中止,在STM32F103系列上面,又只要60个(在107系列才有68个)。

ISER[2]:ISER全称是:Interrupt Set-Enable Registers,这是一个中止使能寄存器组。

ICER[2]:全称是:Interrupt Clear-Enable Registers,是一个中止除能寄存器组。

ISPR[2]:全称是:Interrupt Set-Pending Registers,是一个中止挂起操控寄存器组。

ICPR[2]:全称是:Interrupt Clear-Pending Registers,是一个中止解挂操控寄存器组。

IABR[2]:全称是:AcTIve Bit Registers,是一个中止激活标志位寄存器组。

IPR[15]:全称是:Interrupt Priority Registers,是一个中止优先级操控的寄存器组。

简略介绍一下STM32的中止分组:STM32将中止分为5个组,组0~4。该分组的设置是由SCB-》AIRCR寄存器的bit10~8来界说的。

STM32单片机的复用端口初始化的进程及办法

经过这个表,咱们就能够清楚的看到组0~4对应的装备联系,例如组设置为3,那么此刻一切的60个中止,每个中止的中止优先寄存器的高四位中的最高3位是抢占优先级,低1位是呼应优先级。每个中止,你能够设置抢占优先级为0~7,呼应优先级为1或0。抢占优先级的等级高于呼应优先级。而数值越小所代表的优先级就越高。

STM32的中止如此之多,装备起来并不简单,因而,咱们需求一个强壮而便利的中止操控器NVIC (Nested Vectored Interrupt Controller)。NVIC是归于

Cortex内核的器材,不行屏蔽中止 (NMI)和外部中止都由它来处理,而SYSTICK不是由NVIC来操控的。

运用NVIC来装备中止时,天然想到ST库必定也现已把它封装成库函数了。对NVIC初始化NVIC_Init() 函数,首要要界说并填充一个NVIC_InitTypeDef 类型的结构体。

这个结构体有四个成员:

NVIC_IRQChannel 需求装备的中止向量;

NVIC_IRQChannelCmd 使能或封闭相应中止向量的中止呼应;

NVIC_IRQChannelPreempTIonPriority 装备相应中止向量抢占优先级;

NVIC_IRQChannelSubPriority 装备相应中止向量的呼应优先级;

首要要用NVIC_IRQChannel参数来挑选即将装备的中止向量,用NVIC_IRQChannelCmd参数来进行使能(ENABLE)或封闭(DISABLE)该中止。在NVIC_IRQChannelPreempTIonPriority成员要装备中止向量的抢占优先级,在NVIC_IRQChannelSubPriority需求装备中止向量的呼应优先级。

抢占优先级和呼应优先级

STM32的中止向量具有两个特点,一个为抢占特点,另一个为呼应特点,其特点编号越小,标明它的优先等级越高。

抢占,是指打断其它中止的特点,即因为具有这个特点,会呈现嵌套中止(在履行中止服务函数A的进程中被中止B打断,履行完中止服务函数B再持续履行中止服务函数A),抢占特点由NVIC_IRQChannelPreemptionPriority的参数装备。

而呼应特点则应用在抢占特点相同的情况下,当两个中止向量的抢占优先级相一起,假如两个中止一起抵达,则先处理呼应优先级高的中止,呼应特点由NVIC_IRQChannelSubPriority的参数装备。

例如:现在有三个中止向量:

中止向量 抢占优先级 呼应优先级

A    0     0

B   1      0

C   1 1

若内核正在履行C的中止服务函数,则它能被抢占优先级更高的中止A打断,因为B和C的抢占优先级相同,所以C不能被B打断。但假如B和C中止是一起抵达的,内核就会首要呼应呼应优先等级更高的B中止。

NVIC只能够装备16种 中止向量的优先级,也便是说,抢占优先级和呼应优先级的数量由一个4位的数字来决议,把这个4位数字的位数 分配成抢占优先级部分和呼应优先级部分。有5组分配方法。

要装备这些优先级组,能够选用库函数NVIC_PriorityGroupConfig(),可输入的参数为NVIC_PriorityGroup_0 ~ NVIC_PriorityGroup_4,分别为以上介

绍的5种分配组。

中止优先级设置的进程:

1. 体系运转开端的时分设置中止分组。确认组号,也便是确认抢占优先级和子优先级的分配位数。调用函数为NVIC_PriorityGroupConfig();

2. 设置所用到的中止的中止优先等级。对每个中止调用函数为NVIC_Init();

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/346947.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部