NVIC中止优先级
一、简介:
CM4内核能够支撑256个中止,包含16个内核中止和240个外部中止,256级的可编程中止设置。关于STM32F4没有用到CM4内核的一切东西,仅仅用到了一部分,关于STM32F40和41系列共有92个中止,其中有10个内核中止和82个可屏蔽中止,常用的为82个可屏蔽中止。
二、相关寄存器:
ISER[8]—中止使能寄存器组,用来使能中止,每一位操控一个中止,咱们上面现已说明晰操控82个可屏蔽的中止,因而使用ISER[0~2]这三个32位寄存器就够了。一下的几个寄存器同理。
ICER[8]—中止除能寄存器组,用来消除中止。
ISPR[8]—中止挂起操控寄存器组,用来挂起中止。
ICPR[8]—中止解挂操控寄存器组,用来免除挂起。
IABR[8]—中止激活标志寄存器组,对应位假如为1则一共中止正在被碑文。
IP[240]—中止优先级操控寄存器组,它是用来设置中止优先级的。咱们只用到了IP[0]~IP[81],每个寄存器只用到了高4位,这4位又用来设置抢占优先级和呼应优先级(有关抢占优先级和呼应优先级后面会介绍到),而关于抢占优先级和呼应优先级各占多少位则由AIRCR寄存器操控,相关设置如下图所示:
关于抢占优先级和呼应优先级的了解,能够将它们简略的了解为两个等级,抢占优先级的等级要比呼应优先级的等级高,简略的了解为一个为老一辈的一个为后辈的,后辈要让着老一辈,因而抢占优先级的中止能够打断呼应优先级的中止,而同等级的中止就得有个先来后到的了,先来的先碑文。
三、相关库函数使用
1、中止优先级分组函数:void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup),用来设置设置中止优先级的分组,便是设置AIRCR寄存器的值。
2、中止初始化:NVIC_Init(),用来设置一个中止的相关参数,包含中止通道、抢占优先级、呼应优先级、通道使能。
外部中止
一、简介:
STM32F4的每一个IO都能够作为外部中止的中止输进口,其中止操控器支撑22个中止/事情恳求。其中有:1、EXTI线0~15:外部IO口的输入中止。2、线16:PVD输出。3、线17:RTC闹钟事情。4、线18:USB OTG FS唤醒事情。5、线19:以太网唤醒。6、线20:USB OTG HS唤醒事情。7、线21:RTC侵略和时刻戳事情。8、线22:RTC唤醒事情。
二、IO口与中止线的对应:
STM32F4IO口远比16根中止线要多,假如要对应上就需要多个IO口共用一根中止线,咱们每一组IO口都有16个IO口,则能够做如下对应,即:PA0、PB0、……、PI0,对应中止线0,顺次类推则能够做好相应对应。根据该结构则有了如下的装备进程。
三、外部中止装备:
1、使能IO口时钟,初始化IO口。
2、舱位SYSCFG时钟,设置IO口和中止线的映射。相关函数为:void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx,uint8_t EXTI_PinSourcex)
3、初始化线上中止,设置相关参数。相关函数为:EXTI_Init();相关参数包含:中止线、中止形式、中止触发条件、中止线使能。
4、装备中止分组。相关函数为:NVIC_Init();相关参数包含:中止通道、抢占优先级、呼应优先级、使能中止通道。
5、编写中止服务函数。即中止触发后碑文的相关代码。与其相关的有两个函数为:ITStatus EXTI_GetITStatus(uint32_t EXTI_Line),用来判别线上中止是否产生。void EXTI_ClearITPendingBit(uint32_t EXTI_Line),用来在中止函数结束时铲除中止标志位。
总结:
有关NV%&&&&&%的中止优先级装备和外部中止的相关结构和装备就介绍到这儿,这些介绍是编写相关代码的根底,在了解的根底上也要去书写相关的代码和例程,一起规划的相关中止触发事情来多用,用的多了天然会在理论的根底上得到提高。给自己加油吧!!