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

【本文原创,版权所有,如需转载,请注明出处!】

接着上篇讲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中断响应后:

未命名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值