NVIC寄存器

stm32_exti(含NVIC)配置及库函数讲解 
2013-03-03 21:37:30|  分类: STM32F103VBT6 |  标签:stm32_exti  stm32_nvic  |举报|字号 订阅
EXTI   external interrupt      外部中断
STM32有76个中断,包括16个内核中断和60个可屏蔽中断,具有16级可编程的中断优先级。而我们常用的就是这60个可屏蔽中断,所以我们就只针对这60个可屏蔽中断进行介绍。
关于中断的设置,在STM32PDF文档中是不到关于NVIC相关寄存器的说明的,是让大家摸不着门道吗?还是故装高深?最后在《CM3权威指南》上到NVIC相关寄存器,下面重点介绍这几个寄存器。
ISER[2]:ISER全称是Interrupt Set-Enable Registers,这是一个中断使能寄存器组。上面说了STM32的可屏蔽中断只有60个,这里用了2个32位的寄存器,总共可以表示64个中断。而STM32只用了其中的前60个。ISER[0]的bit0~bit31分别对应中断0~31。ISER[1]的bit0~bit27对应中断32~59;这样总共60个中断就分别对应上了。你要使能某个中断,必须设置相应的ISE
R位为1,使该中断被使能(这里仅仅是使能,还要配合中断分组、屏蔽、IO口映射等设置才算是一个完整的中断设置)。具体每一位对应哪个中断,请参考stm32f10x_nvic.h里面的第36行处。
/* IRQ Channels --------------------------------------------------------------*/
#define WWDG_IRQChannel              ((u8)0x00)  /* Window WatchDog Interrupt */
#define PVD_IRQChannel              ((u8)0x01)  /* PVD through EXTI Line detection Interrupt */
#define TAMPER_IRQChannel            ((u8)0x02)  /* Tamper Interrupt */
#define RTC_IRQChannel              ((u8)0x03)  /* RTC global Interrupt */
#define FLASH_IRQChannel            ((u8)0x04)  /* FLASH global Interrupt */
#define RCC_IRQChannel              ((u8)0x05)  /* RCC global Interrupt */
#define EXTI0_IRQChannel            ((u8)0x06)  /* EXTI Line0 Interrupt */
#define EXTI1_IRQChannel            ((u8)0x07)  /* EXTI Line1 Interrupt */
#define EXTI2_IRQChannel            ((u8)0x08)  /* EXTI Line2 Interrupt */
#define EXTI3_IRQChannel            ((u8)0x09)  /* EXTI Line3 Interrupt */
#define EXTI4_IRQChannel            ((u8)0x0A)  /* EXTI Line4 Interrupt */
#define DMA1_Channel1_IRQChannel    ((u8)0x0B)  /* DMA1 Channel 1 global Interrupt */
#define DMA1_Channel2_IRQChannel    ((u8)0x0C)  /* DMA1 Channel 2 global Interrupt */
#define DMA1_Channel3_IRQChannel    ((u8)0x0D)  /* DMA1 Channel 3 global Interrupt */
#define DMA1_Channel4_IRQChannel    ((u8)0x0E)  /* DMA1 Channel 4 global Interrupt */
#define DMA1_Channel5_IRQChannel    ((u8)0x0F)  /* DMA1 Channel 5 global Interrupt */
#define DMA1_Channel6_IRQChannel    ((u8)0x10)  /* DMA1 Channel 6 global Interrupt */
#define DMA1_Channel7_IRQChannel    ((u8)0x11)  /* DMA1 Channel 7 global Interrupt */
#define ADC1_2_IRQChannel            ((u8)0x12)  /* ADC1 et ADC2 global Interrupt */
#define USB_HP_CAN_TX_IRQChannel    ((u8)0x13)  /* USB High Priority or CAN TX Interrupts */
#define USB_LP_CAN_RX0_IRQChannel    ((u8)0x14)  /* USB Low Priority or CAN RX0 Interrupts */
#define CAN_RX1_IRQChannel          ((u8)0x15)  /* CAN RX1 Interrupt */
#define CAN_SCE_IRQChannel          ((u8)0x16)  /* CAN SCE Interrupt */
#define EXTI9_5_IRQChannel          ((u8)0x17)  /* External Line[9:5] Interrupts */
#define TIM1_BRK_IRQChannel          ((u8)0x18)  /* TIM1 Break Interrupt */
#define TIM1_UP_IRQChannel          ((u8)0x19)  /* TIM1 Update Interrupt */
#define TIM1_TRG_COM_IRQChannel      ((u8)0x1A)  /* TIM1 Trigger and Commutation Interrupt */
#define TIM1_CC_IRQChannel          ((u8)0x1B)  /* TIM1 Capture Compare Interrupt */
#define TIM2_IRQChannel              ((u8)0x1C)  /* TIM2 global Interrupt */
#define TIM3_IRQChannel              ((u8)0x1D)  /* TIM3 global Interrupt */
#define TIM4_IRQChannel              ((u8)0x1E)  /* TIM4 global Interrupt */
#define I2C1_EV_IRQChannel          ((u8)0x1F)  /* I2C1 Event Interrupt */
#define I2C1_ER_IRQChannel          ((u8)0x20)  /* I2C1 Error Interrupt */
#define I2C2_EV_IRQChannel          ((u8)0x21)  /* I2C2 Event Interrupt */

本文发布于:2024-09-22 10:26:23,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/473845.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   寄存器   屏蔽   门道   使能   设置   介绍   相关
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议