您的位置:首页 > 其它

Keil for arm 关于enit0 快速中断(FIQ)的响应

2011-03-29 20:18 399 查看
【本文原创,版权所有,如需转载,请注明出处!】
接着上篇讲arm7对于普通中断的响应。今天讲一下,关于快速中断的响应。
步骤1:基础环境:arm7 LPC2106 , Realview 4.2(编译环境默认)
步骤2:starup.s文件(启动代码)和irq中断不同的是,这里需要修改一下启动代码。    
             修改前后如下图(注:改动只在图中区域)



                                                      图1:原始
           修改后如下图(注:对比原图改动如下



步骤3:编写程序
#include "LPC210x.h"
#define CON 0x000000ff //设置p0.0-p0.7为输出,其余引脚为输入
int volatile temp = 0;
__irq void eint0(void)
{
   IOCLR=CON;
   IOSET=(++temp)%16;
   while(EXTINT&(1<<0))
   EXTINT=(1<<0);
   VICVectAddr=0;
}
int main()
{PINSEL0=0xa0000000; //设置p0.14,p0.15为中断方式
PINSEL1=0x00000001; //设置p0.16为中断方式
IODIR=CON;//设置p0.0-p0.7为输出,其余引脚为输入
IOCLR=CON;     //通过向GPIOl输出模式引脚写1清零IOSET相应位,对应引脚输出低电平
IOSET=temp;  //通过向GPIOl输出模式引脚写1输出高电平
VICIntEnClr = 0xfffffff;//消除所有中断标志
VICIntSelect=(1<<14);//设置p0.16为快速中断(FIQ)
VICIntEnable=(1<<14);//使能eint0;//使能eint0 EXTINT=0x07;//清除中断标志   
while(1);}
proteus里的仿真结果如下图:
中断前:




按下key1中断响应后:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: