首页 > 编程知识 正文

nvic的主要特性,hanvic

时间:2023-05-06 21:27:38 阅读:41323 作者:2151

中断NVIC相关内容(补充)编程的三个部分—— 1.配置NVIC_Config()函数

NVIC是嵌套向量中断控制器,控制整个芯片中断相关功能,与内核紧密耦合,是内核中的外围设备。 因此,控制中断的进行与NVIC_Config函数的配置密切相关。2.配置EXTI_Config()函数

外部中断/事件控制器(exit ) :管理控制器20个中断/事件线的外部中断/事件控制器。 每个中断/事件线路都需要边缘检测器,可以进行输入信号的上升沿检测和下降沿检测。 在EXTI中,可以分别设置每个中断/事件行,将每个中断/事件行分别设置为中断或事件,以及设置触发事件的属性。

(接通相应GPIO的时钟,初始化与EXIT连接的GPIO (构成EXIT,连接GPIO引脚),初始化GPIO外围设备,构成中断/事件线路。 )

3.编写中断服务函数

中断并不是从一开始就判断程序在那里发生还是什么时候发生。 中断完全随机发生,中断源与硬件连接,硬件会发生触发中断

中断只需获取中断类型并将其添加到队列中,所有其他复杂的程序处理都由主函数完成

中断服务函数的重点是判断是否发生了某个中断,以及发生后是否清除标志位。 (请在结束中断之前明确中断标志位。 否则,中断结束后,标志位不会被清除。 再次进入中断)

另一方面,寄存器SCB—AIRCR的8—10位共计3位的可设定值表示中断优先顺序的分组,具体的分组情况参照前面的备忘录表

每个中断都有一个IP寄存器,其4~7位合计4位设置组的抢占优先级和响应优先级。 (组的状况和优先级分配是一对一对应的,如果设置了组,则该优先级是与该组对应的唯一优先级分配,具体对应于引用上一个备忘组。 如果两个中断的优先级相同,则先发生哪一个中断。 上一个备注中提到的组配置通常由使用nvic _ prioritygroupconfig (uint 32 _ TN vic _ priority )函数配置SCB—AIRCR寄存器组成(条目并行程序

注:优先级高的中断可以在优先级低的中断处理中进行响应。 也就是说,中断可以嵌套,或者优先级高的中断可以嵌套优先级低的中断。

与上一个笔记本组对应的五对排列

nvic _ init structure.nvic _ IRQ channel=exti0_ IRQ channel; //中断源nvic _ init structure.nvic _ irqchannelpreemptionpriority=1; //抢占优先级1 nvic _ init structure.nvic _ irqchannelsubpriority=1; //响应优先级级别1 nvic _ init structure.nvic _ irqchannelcmd=enable; //允许中断(或失败)中断设置相关寄存器

__IO uint8_t IP[240]; //中断优先级控制的寄存器组

__IO uint32_t ISER[8]; //中断使能寄存器组

__IO uint32_t ICER[8]; //中断失败寄存器组

__IO uint32_t ISPR[8]; //中断挂起寄存器组可以挂起正在执行的中断

__IO uint32_t ICPR[8]; //可以解除寄存器组的中断,解除挂起的中断

__IO uint32_t IABR[8]; //中断激活标志位寄存器组读取并只读在该寄存器中运行的中断是什么

各寄存器的配置和作用

明确IP和IPR

(IPR )中断优先级寄存器是60个32位寄存器,st的结构映射了240个8位字节数组NVIC-IP[240],每个都对应于中断的优先级

下图是配置了函数结构体的图

NVIC_InitTypeDef结构。 第一个成员变量用于确定要使用的中断是哪个中断响应函数接口(或通道),它来自82个外部中断向量表。 第二个成员变量用于设置中断优先级,第三个成员变量用于设置响应优先级,第四个成员变量用于启用此通道。 因为IRQ是中断请求的简称,所以第四个成员变量也意味着中断

二.配置EXTI初始化结构体。 结构体如下。

typedef struct { uint 32 _ texti _ line; //中断/事件线EXTIMode_TypeDef EXTI_Mode; //EXTI模式extitrigger _ typedefexti _ trigger; //触发器类型FunctionalState EXTI_LineCmd; //EXTI使能} EXTI_InitTypeDef; 此结构主要用于选择适当的EXTI线,选择触发模式,选择发生的结果(中断还是事件),以及设置是否启用EXTI线。

EXTI_Line :中断线选择,选项EXTI_0至EXTI_19 (共20个。 因为刚才配置了与GPIO端子对应的EXTI线,所以初始化结构体中的EXTI线是与GPIO连接的线。

exti _ mode :选择exti模式。 您可以选择生成中断还是生成事件。 就是决定信号的方向。 是要产生中断吗? 还是会发生事件? 这里中断了。

exti _ trigger :在exti边缘触发模式下,可以在上升沿触发、下降沿触发或上升沿和下降沿都产生触发信号。

exti _ line cmd :控制是否启用exti行,也可以选择启用或禁用exti行。

初始化结构体配置完成后,通过初始化函数写入相应的寄存器。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。