STM32单片机的复用端口初始化的步骤及方法.doc

上传人:白大夫 文档编号:3273694 上传时间:2019-08-07 格式:DOC 页数:4 大小:19.50KB
返回 下载 相关 举报
STM32单片机的复用端口初始化的步骤及方法.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《STM32单片机的复用端口初始化的步骤及方法.doc》由会员分享,可在线阅读,更多相关《STM32单片机的复用端口初始化的步骤及方法.doc(4页珍藏版)》请在三一文库上搜索。

1、STM32单片机的复用端口初始化的步骤及方法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_APB2PeriphCloc

2、kCmd(RCC_APB2Periph_USART1, ENABLE);3) 端口模式配置。 在IO复用位内置外设功能引脚的时候,必须设置GPIO端口的模式,至于在复用功能下GPIO的模式是怎么对应的,这个可以查看手册。所以,我们在使用复用功能的是时候,最少要使能2个时钟:1) GPIO时钟使能 ;2) 复用的外设时钟使能 同时要初始化GPIO以及复用外设功能串口设置的一般步骤可以总结为如下几个步骤:1) 串口时钟使能,GPIO时钟使能2) 串口复位3) GPIO端口模式设置4) 串口参数初始化5) 开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)6) 使能串口7) 编写中断处理函

3、数端口重映射:(暂略)中断量控制:STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。而我们常用的就是这68个可屏蔽中断,但是STM32的68个可屏蔽中断,在STM32F103系列上面,又只有60个(在107系列才有68个)。ISER2:ISER全称是:Interrupt Set-Enable Registers,这是一个中断使能寄存器组。ICER2:全称是:Interrupt Clear-Enable Registers,是一个中断除能寄存器组。ISPR2:全称是:Interrupt Set-Pending Registers,是一个中断挂起控制寄存器

4、组。ICPR2:全称是:Interrupt Clear-Pending Registers,是一个中断解挂控制寄存器组。IABR2:全称是:Active Bit Registers,是一个中断激活标志位寄存器组。IPR15:全称是:Interrupt Priority Registers,是一个中断优先级控制的寄存器组。简单介绍一下STM32的中断分组:STM32将中断分为5个组,组04。该分组的设置是由SCB-AIRCR寄存器的bit108来定义的。通过这个表,我们就可以清楚的看到组04对应的配置关系,例如组设置为3,那么此时所有的60个中断,每个中断的中断优先寄存器的高四位中的最高3位是抢

5、占优先级,低1位是响应优先级。每个中断,你可以设置抢占优先级为07,响应优先级为1或0。抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。STM32的中断如此之多,配置起来并不容易,因此,我们需要一个强大而方便的中断控制器NVIC (Nested Vectored Interrupt Controller)。NVIC是属于Cortex内核的器件,不可屏蔽中断 (NMI)和外部中断都由它来处理,而SYSTICK不是由NVIC来控制的。使用NVIC来配置中断时,自然想到ST库肯定也已经把它封装成库函数了。对NVIC初始化NVIC_Init() 函数,首先要定义并填充一个NVIC_In

6、itTypeDef 类型的结构体。这个结构体有四个成员:NVIC_IRQChannel 需要配置的中断向量;NVIC_IRQChannelCmd 使能或关闭相应中断向量的中断响应;NVIC_IRQChannelPreempTIonPriority 配置相应中断向量抢占优先级;NVIC_IRQChannelSubPriority 配置相应中断向量的响应优先级;首先要用NVIC_IRQChannel参数来选择将要配置的中断向量,用NVIC_IRQChannelCmd参数来进行使能(ENABLE)或关闭(DISABLE)该中断。在NVIC_IRQChannelPreempTIonPriority成员

7、要配置中断向量的抢占优先级,在NVIC_IRQChannelSubPriority需要配置中断向量的响应优先级。抢占优先级和响应优先级STM32的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表明它的优先级别越高。抢占,是指打断其它中断的属性,即因为具有这个属性,会出现嵌套中断(在执行中断服务函数A的过程中被中断B打断,执行完中断服务函数B再继续执行中断服务函数A),抢占属性由NVIC_IRQChannelPreempTIonPriority的参数配置。而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达,则先处理响应优先级高

8、的中断,响应属性由NVIC_IRQChannelSubPriority的参数配置。例如:现在有三个中断向量:中断向量 抢占优先级 响应优先级A 0 0B 1 0C1 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();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1