完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、简介:
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),用来在中断函数结束时清除中断标志位。 总结:有关NVIC的中断优先级配置和外部中断的相关结构和配置就介绍到这里,这些介绍是编写相关代码的基础,在理解的基础上也要去书写相关的代码和例程,同时设计的相关中断触发事件来多用,用的多了自然会在理论的基础上得到升华。给自己加油吧!! |
|
|
|
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
828 浏览 0 评论
824 浏览 0 评论
861 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
836 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1292 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11823 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 15:19 , Processed in 0.868967 second(s), Total 69, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号