您好、欢迎来到现金彩票网!
当前位置:彩之网 > 中断屏蔽 >

stm32_exti(含NVIC)配置及库函数讲解

发布时间:2019-07-22 01:52 来源:未知 编辑:admin

  的中断优先级。而我们常用的就是这60个可屏蔽中断,所以我们就只针对这60个可屏蔽中断进行介绍。

  关于中断的设置,在STM32的PDF文档中是找不到关于NVIC相关寄存器的说明的,是让大家摸不着门道吗?还是故装高深?最后在《CM3权威指南》上找到NVIC相关寄存器,下面重点介绍这几个寄存器。

  ISER[2]:ISER全称是InterruptSet-EnableRegisters,这是一个中断使能寄存器组。上面说了STM32的可屏蔽中断只有60个,这里用了2个32位的寄存器,总共可以表示64个中断。而STM32只用了其中的前60个。ISER[0]的bit0~bit31分别对应中断0~31。ISER[1]的bit0~bit27对应中断32~59;这样总共60个中断就分别对应上了。你要使能某个中断,必须设置相应的ISER位为1,使该中断被使能(这里仅仅是使能,还要配合中断分组、屏蔽、IO口映射等设置才算是一个完整的中断设置)。具体每一位对应哪个中断,请参考stm32f10x_nvic.h里面的第36行处。

  ICER[2]:全称是InterruptClear-EnableRegisters,是一个中断除能寄存器组。该寄存器组与ISER的作用恰好相反,是用来清除某个中断的使能的。这里要与专门设置一个ICER来清除中断位,而不是向ISER写0来清除,是因为NVIC的这些寄存器都是写1有效的,写0无效的。具体为什么这么设计,请看《CM3权威指南》第125页。

  ISPR[2]:全称是InterruptSet-PendingRegisters,是一个中断挂起控制寄存器组。每一位对应的中断和ISER是一样的。通过置1,可以将正在进行的中断挂起,而执行同级或更高级别的中断。写0是无效的。

  ICPR[2]:全称是:InterruptClear-PendingRegisters,是一个中断解挂控制寄存器组。其作用与ISPR相反,对应位也和ISER是一样的。通过设置1,可以将挂起的中断解挂。写0无效。

  IABR[2]:全称是ActiveBitRegisters,是一个中断激活标志位寄存器组。对应位所代表的的中断和ISER一样,如果为1,则表示该位所对应的中断正在被执行。这是一个只读寄存器,通过它可以知道当前在执行的中断是哪一个。在中断执行完了由硬件自动清零。

  IPR[15]:全称是InterruptPriorityRegisters,是一个中断优先级控制的寄存器组。这个寄存器组相当重要!STM32的中断分组与这个寄存器组密切相关。IPR寄存器组由15个32bit的寄存器组成,每个可屏蔽中断占用8bit,这样总共可以表示15*4=60个可屏蔽中断。刚好和STM32的可屏蔽中断数相等。IPR[0]的[31~24],[23~16],[15~8],[7~0]分别对应中断3~0,以此类推,总共对应60个外部中断。而每个可屏蔽中断占用的8bit并没有全部使用,而是只用了高4位。这4位,又分为抢占优先级和子优先级。抢占优先级在前,子优先级在后。而这两个优先级各占几个位又要根据SCB->

  AIRCR中中断分组的设置来决定。

  这里简单介绍一下STM32的中断分组:STM32将中断分为5各组,组0~4。该分组的设置是由SCB->

  AIRCR 寄存器的bit10~8来定义的。具体的分配关系如下表所示:

  UserButton硬件连接如下图所示:当按键被按下,PB9检测到低电平,相反PB9被3.3V电源拉高。

  预备知识:80个通用I/O端口以下图的方式连接到19个外部中断/事件线上:

  2.选择中断线,中断模式(中断还是事件),触发模式(电平还是跳变沿),使能

http://ando2.com/zhongduanpingbi/240.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有