广告

原创 EXTINT外部中断流程

2009-5-14 10:16 2967 0 3 分类: MCU/ 嵌入式

首先使用PINSEL0和PINSEL1来配置相应的I/O口工作模式,设置相应的中断位→设置相应的输入输出→使用VICIntSelect来选择使用FIQ或者IRQ(0)→VICIntEnable中断使用→使用EXTINT设置中断标志,写入1将方位清零→while(1)等等中断发生。
在中断子函数中,首先使用VICIRQStatus读出当前的中断状态→函数功能完成→清除相应中断→设置向量地址寄存器VICVectAddr(当任何分配给向量IRQ Slot的中断请求或软件中断使能,分配为IRQ并声明时,读取该寄存器将返回最高优先级微量地址寄存器中的地址。否则,返回默认微量地址寄存器中的地址。)


#include "config.h"
#define LEDCON 0x00000800


/****************************************************************************
功能:外部中断1处理
****************************************************************************/


void __irq IRQ_Eint1(void)
{ uint32 i;


i=VICIRQStatus;                  //读出VICIRQStatus的值
i=IOSET;                         //
读出当前LED2控制值
if((i&LEDCON)==0)               //控制LED2控制值
{ IOSET="LEDCON";
}


else


{ IOCLR="LEDCON";
}
while((EXTINT&0x02)!=0)          //
等待外部中断信号恢复为高电平
{ EXTINT="0x02";                   //
清除EINT1中断标志
}

VICVectAddr=0x00;                //中断处理结束时,硬件复位,勿忘
}

/****************************************************************************
*
名称:main()
*
功能:
****************************************************************************/
int main(void)
{
PINSEL0=0x20000000;//
这里选择为外部中断1,
PINSEL1=0x00000000;
IODIR=LEDCON;//
控制引脚输入输出
IOSET=LEDCON;//
点亮相应的灯
IOCLR=LEDCON; //
熄灭相应的灯,但上面那一句有什么作用,好象多余呀
VICIntSelect=0;//中断功能选择
VICIntEnable=0x00008000;//
在某一位上使能中断
VICVectCntl1=0x<?XML:NAMESPACE PREFIX = ST1 />2F;
        VICVectAddr1=(int)IRQ_Eint1;
EXTINT=0x07;
   while(1);
}


说明:VICVectAddr(当任何分配给向量IRQ Slot的中断请求或软件中断使能,分配为IRQ并声明时,读取该寄存器将返回最高优先级微量地址寄存器中的地址。否则,返回默认微量地址寄存器中的地址。)


VICVectCntl每一个寄存器控制16个微量IRQ Slot中的一个,Slot0优先级最高。在VICVectCntl寄存器中禁止一个微量IRQ Slot不会禁止中断本身,中断只是变为非向量的形式。为1 表示向量IRQ使能,

广告

文章评论 3条评论)

登录后参与讨论

wwzj_cq_237305778 2015-11-3 21:26

我这个程序用iar编译后按键没有反应啊,求教高手!

rasoar_248425613 2009-5-15 08:44

呵呵,以后习惯了就好了啊

YIP 2009-5-15 00:14

有点复杂
相关推荐阅读
rasoar_248425613 2010-04-27 17:12
STM32使用模拟I2C读写24C02
    近日,调试STM32的I2C读写24C02,果然出现了各位同仁出现的莫名的时序问题,在尝试官方和非官方的N的平方个版本后,发现总是存在问题。决定改用模拟I2C,很快就调试完毕。这里给各位同仁提...
rasoar_248425613 2010-04-14 13:28
ARM开发总结的小知识 Code, RO-data,RW-data,ZI-data
 ARM开发总结的小知识 字节 8位半字 16位字   32位Code, RO-dataRW-data,ZI-dataCode为程序代码部分RO-data 表示 程序定义的常量 const temp;...
rasoar_248425613 2010-04-10 20:53
uCOS-ii中文书(邵贝贝)
很经典的一本书。...
rasoar_248425613 2009-11-03 15:23
经典子程序集锦
1、当单片机与某模块用并行通信时,你是否遇到过PCB板上Px.0~Px.7刚好连接模块的D7~D0的数据接口的情况,此时可能需要将八位二进制数倒序处理。如:将“0100 1101”变为“1011 00...
rasoar_248425613 2009-08-14 16:37
RTX 演示
这是一个来自官方的文档,讲的还可以。。。...
rasoar_248425613 2009-08-06 16:47
轻松学ARM原创系列之在MDK下调试H-JTAG+Wiggler
轻松学ARM原创系列之<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />在MDK下调试...
我要评论
3
0
广告