当前位置:首页 > 单片机 > 单片机
[导读]a.外部子中断外部子中断的屏蔽位主要有两个寄存器(即屏蔽寄存器),EINTMASK和INTMSK,所以要产生中断,必须将这两个寄存器中对应的屏蔽位中断使能即可。这两个寄存器一般只在初始化的时候使用。中断暂存寄存器,EI

a.外部子中断

外部子中断的屏蔽位主要有两个寄存器(即屏蔽寄存器),EINTMASK和INTMSK,所以要产生中断,必须将这两个寄存器中对应的屏蔽位中断使能即可。这两个寄存器一般只在初始化的时候使用。

中断暂存寄存器,EINTPEND和SRCPND,中断产生后将会使这两个寄存器对应的位置1,所以中断服务函数必须将这两个寄存器中的对应的中断标志位清除(写1清除),否则会一直产生中断。注意:需要先清除EINTPEND,然后在清除SRCPND的中断标志位。这两个寄存器一般只在中断产生后中断标志的清除,用于中断服务函数中。

INTPND是中断最高优先级寄存器,也需要在中断服务函数中进行清除。

INTMOD是设置中断是FIQ还是IRQ,默认值为0x00000000,即默认值是IRQ。

PRIORITY是中断以何种优先级进行选择。

此外,外部中断是的设置还涉及到ARM的引脚设置,像GPxCON(引脚设置寄存器),EXTINT0-EXTINT2:分别设置EINT0—EINT7、EINT8—EINT15、EINT16—EINT23的触发方式(高电平触发、低电平触发、下降沿触发、上升沿触发)。EINTFLT0-EINTFLT3:控制滤波时钟和滤波宽度。

初始化处理步骤:

1)引脚的配置,GPxCON、EXTINT0、EXTINT1、EXTINT2的配置。

2)清除对应的中断屏蔽位,EINTMASK和INTMSK的设置。

3)将中断函数安装在软中断向量表中。

外部中断后的处理:

1)用户中断程序

2)中断暂存寄存器的处理,EINTPEND和SRCPND。注意先清除EINTPEND。

3)最高优先级的寄存器(INTPND)的清除。

b.外部中断

外部中断主要是EINT0~EINT3,相对于外部子中断的处理没有寄存器EINTPEND和EINTMASK,即子中断暂存寄存器和子中断屏蔽寄存器。如上图所示。

c.内部子中断

内部子中断和外部子中断主要是不用配置外部引脚,但是需要对其对应的模块寄存器进行设置,以及将EINTMASK和EINTPEND换成SUBSRCPND和INTSUBMSK即可。像UARTx中断中的子中断等。

d.内部中断

内部中断相对于外部子中断主要是没有SUBSRCPND和INTSUBMSK。像Timer0中断。


事例:

//****************外部子中断*****************

void __irq Led_Isr(void)

{

unsigned long irqOffSet;

send_str((unsigned char *)"EXINT is started!rn");

Led_off(0);dely(50);

Led_on(0);dely(50);

irqOffSet = rINTOFFSET;// 取得中断号

rEINTPEND &= (1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19);

rSRCPND &= (1<

rINTPND = rINTPND;// 清除中断结果

send_str((unsigned char *)"EXINT is end!rn");

}


extern void EINT_Init(void)

{

// 设置K1,K2,K3,K4,K5,K6对应控制寄存器为中断模式

rGPGCON = (2<<0) | (2<<6) | (2<<10) | (2<<12) | (2<<14) | (2<<22);

/*

01x falling edge triggered下降沿触发

10x Rising edge triggered上升沿触发

11x Both edge triggered双沿触发

*/

// 设置K1,K2,K3,K4,K5按键中断触发方式为上升沿触发

rEXTINT1 = (3<<0) | (3<<12) | (3<<20) | (3<<24) | (3<<28);

rEXTINT2 = (3<<12);// 设置K6按键中断触发方式为上升沿触

// 打开KEY1~KEY6的屏蔽位

rINTMSK &= ~(1<<5);

rEINTMASK &= ~((1<<8) | (1<<11) | (1<<13) | (1<<14) | (1<<15) | (1<<19));


pISR_EINT8_23 = (unsigned int)Led_Isr;

}

//****************定时器*****************

void __irq Timer0_isr()

{

send_str((unsigned char *)"Timer0 interrupt is started!rn");

Led_on(0);Led_off(1);Led_off(2);Led_off(3);

dely(350);

Led_off(0);Led_on(1);Led_off(2);Led_off(3);

dely(350);

Led_off(0);Led_off(1);Led_on(2);Led_off(3);

dely(350);

Led_off(0);Led_off(1);Led_off(2);Led_on(3);

dely(350);

rSRCPND |= 1<<10;

rINTPND |= 1<<10;

send_str((unsigned char *)"Timer0 interrupt is end!rn");

}

void Init_timer0()

{

rTCFG0 &= ~(0xff);

rTCFG0 |= 99;

rTCFG1 &= ~(0xf);

rTCFG1 |= 0x02;

rTCNTB0 =62500;//1s中断一次

rTCON |= 1<<1;

rTCON = 0x09;

//使能定时器中断

rINTMSK = ~(1<<10);

pISR_TIMER0= (unsigned int)Timer0_isr;

}


void Init_PWM0()

{

rGPBCON &= ~(0x03);

rGPBCON |= 1<<1;

rTCFG0 &= ~(0xff);

rTCFG0 |= 99;

rTCFG1 &= ~(0xf);

rTCFG1 |= 0x02;

rTCNTB0 =162;//1s中断一次

rTCMPB0 = rTCNTB0/2;

rTCON |= 1<<1;

rTCON = 0x0d;

}


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

单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对它的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 中断 boot

在嵌入式系统的开发中,中断机制扮演着至关重要的角色。它允许系统在执行正常程序流程时,响应外部或内部事件,从而确保系统能够及时响应并处理紧急事件。本文将深入探讨嵌入式系统中中断的概念、如何在系统中设置和处理多个中断的优先级...

关键字: 嵌入式系统 中断

中断机制在单片机及嵌入式系统中是重中之重,我们必须深入理解。首先我们要明白一点:CPU执行指令代码,并非一直顺序地逐条执行,而是可能突然跳到某段代码上去的。因为这段代码的优先级更高,或者说它更加紧迫,CPU必须暂时放下手...

关键字: 中断 单片机 嵌入式系统

PIC单片机是基于RISC系统结构的单片机,最初的设计是支持PDP(编程数据处理器)计算机。大量的操作可以用来控制外围设备。PIC单片机比微控制器具有更快的程序执行能力。它是由微芯片技术公司于1889年发明的,是一种8位...

关键字: PIC单片机 定时器 中断

STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B内存等。还支持ISP下载,不用编程器,只要一个MAX2...

关键字: 单片机 看门狗 中断

什么是PIC中断程序呢?形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程...

关键字: PIC 中断 标志位

MCS—51系列单片机内部只需两个外部接中断连源输入端,当外部接连源多于两个时,就必须进行拓宽,下面介绍几种简略的拓宽办法:

关键字: 单片机 软件 中断

最近在浏览星球主题的时候,发现一位球友打卡中断了,就去关心了一下他(瞧我这该死的责任心❤️),结果被他反手就问了下面这个问题。

关键字: 中断 Spring Boot 实战项目

实质上是加一的计数器。外部脉冲让他不断加一,当计数器溢出时,计数器的溢出相应的中断标志位置1,并向CPU发出中断请求。如果定时器/计数器工作为定时模式,则表示时间以到;如果工作于计数模式,则表示计数器、则表示计数值已满。

关键字: 周期 中断

中断的分类和区别

关键字: 轮询 中断
关闭