当前位置:首页 > 单片机 > 单片机
[导读]对于NVIC的任务,可以概括为三个:1.配置中断向量表--如果不配置,则不能进入中断 SCB->VTOR2.配置系统中断分组--决定了第一和第二优先级各占用的位数 SCB->AIRCR3.配置对应中断优先级和使能中断--中断使能 ISER[0/1

对于NVIC的任务,可以概括为三个:


1.配置中断向量表--如果不配置,则不能进入中断 SCB->VTOR


2.配置系统中断分组--决定了第一和第二优先级各占用的位数 SCB->AIRCR


3.配置对应中断优先级和使能中断--中断使能 ISER[0/1] 中断优先级IPR[0:15]


只要按照这样配置,就可以使用中断了


1 /******************************************************

2 *函数: NVIC_Group(u8 group)

3 *功能: 设置中断分组

4 *参数: group-对应分组号 0~4 共5组

5 *返回: 无

6 ******************************************************/

7 void NVIC_Group(u8 group)//设置中断优先级分组寄存器

8 {

9

10 u32 temp,temp1;

11 //设置中断向量表,这里不配置会导致不能进入中断

12 SCB->VTOR = NVIC_VectTab_FLASH;

13 temp1=(~group)&0x07;//取后三位

14 temp1<<=8;

15 temp=SCB->AIRCR; //读取先前的设置

16 temp&=0X0000F8FF; //清空先前分组

17 temp|=0X05FA0000; //写入钥匙

18 temp|=temp1;

19 SCB->AIRCR=temp; //设置分组 寄存器地址0xe000ed00c 可以看cortex m3权威指南

20 }

21

22

23 /******************************************************

24 *函数: NVIC_Irq_Config(u8 irq,u8 priority)

25 *功能: 设置中断irq中断优先级

26 *参数: irq--中断号

27 priority--中断优先级,4位有效

28 0组0:4 1组1:3 2组2:2 3组3:1 4组4:0

29 有规律的,不难设置,例如组2,想用第一优先级1,第二优先级2,则priority=0110B=0x6

30 *返回: 无

31 ******************************************************/

32 void NVIC_Irq_Config(u8 irq,u8 priority)

33 {

34 u8 addr_en,offset_en;

35 u8 addr,offset;

36

37 addr=irq/4;

38 offset=irq%4;

39

40 addr_en=irq/32; //中断使能控制寄存器

41 offset_en=irq%32;//中断使能控制位

42

43 NVIC->ISER[addr_en]|=1<

44 NVIC->IPR[addr]=priority<<(offset*8+4);// (优先级设置)<<(offset*8+4);

45 }


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

MCS 51 单片机有 5 个(8052 有 6 个) 中断源,为了使每个中断源都能独立地被允许 或禁止 ,以便用户能灵活使用,它在每个中断信号的通道中设置了一个中断屏蔽触发器。只有该触发器无效,它所对应的中断请求信号才...

关键字: 中断控制 中断响应 单片机

阅读nvic:系统中断管理。我的理解——管理系统内部的中断,负责打开和关闭中断。基础应用1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。所有程序中必须的。用法: void NVIC_Configur...

关键字: nvic STM32

cortex-m3支持256个中端,其中包含了16个内核中断,240个外部中断。stm32只有84个中断,包括16个内核中断和68个可屏蔽中断。stm32f103上只有60个中断,f107上才有68个中断。中断是st...

关键字: nvic STM32 中断管理

朋友们,如果你需要在STM32上移植RTOS,那么首先必须深入理解它的中断系统。什么是NVIC?即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。STM32的中有一个强大而...

关键字: nvic STM32

前言:1.要想学习STM32中断,要先掌握STM32对优先级的定义;2.有51单片机开发经验会比较容易理解中断优先级;3.本篇博文基于STM32F103ZET6芯片和3.5.0标准库编写;4.本篇博文从寄存器入手,最终实...

关键字: nvic STM32 中断

////////////////////////////////////////////////////////////////////////////////////////////////////// // 2012...

关键字: MSP430 中断控制 周期信号 定时器

用STM32做项目已经有段时间了,但是我忽然发现我对NVIC其实一点都不了解,所以今天补习了一下NVIC的知识以及我自己对NVIC中断优先级设置的了解,希望对大家有所帮助:对于NVIC中断优先级的设置一直都不是很清楚;具...

关键字: nvic STM32 中断优先级

对于 STM32 讲(还是以Timer2例),外部中断通道位置 28(35 号优先级)是给外部设备 TIME2 的,但 TIME2本身能够引起中断的中断源或事件有好多个,比如更新事件(上溢/下溢) 、

关键字: STM32 中断控制

例程: /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* Enable...

关键字: nvic STM32

ARM7比较难理解和控制的就是中断控制,把自己找的一些资料写上来。1、 快速中断FIQ⑴在主程序中:① 在VICIntSelect中将中断分配为FIQ中断;② 在VICIntEnable中使能外设中断。 ⑵中断服务程序中...

关键字: vic 中断控制
关闭
关闭