Keil for arm 关于enit0 快速中断(FIQ)的响应
2011-03-29 20:18
399 查看
【本文原创,版权所有,如需转载,请注明出处!】
接着上篇讲arm7对于普通中断的响应。今天讲一下,关于快速中断的响应。
步骤1:基础环境:arm7 LPC2106 , Realview 4.2(编译环境默认)
步骤2:starup.s文件(启动代码)和irq中断不同的是,这里需要修改一下启动代码。
修改前后如下图(注:改动只在图中区域)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/eca0fc078e6e85a28939059683656ed7.gif)
图1:原始
修改后如下图(注:对比原图改动如下)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/4c6ea0941f17756b1eed25328d40b88b.gif)
步骤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里的仿真结果如下图:
中断前:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/7b131d6d27fd2351d86badec03b52b11.gif)
按下key1中断响应后:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/da62919ba616ebda13f128f2c1ec1c8b.gif)
接着上篇讲arm7对于普通中断的响应。今天讲一下,关于快速中断的响应。
步骤1:基础环境:arm7 LPC2106 , Realview 4.2(编译环境默认)
步骤2:starup.s文件(启动代码)和irq中断不同的是,这里需要修改一下启动代码。
修改前后如下图(注:改动只在图中区域)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/eca0fc078e6e85a28939059683656ed7.gif)
图1:原始
修改后如下图(注:对比原图改动如下)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/4c6ea0941f17756b1eed25328d40b88b.gif)
步骤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里的仿真结果如下图:
中断前:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/7b131d6d27fd2351d86badec03b52b11.gif)
按下key1中断响应后:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/da62919ba616ebda13f128f2c1ec1c8b.gif)
相关文章推荐
- keil for arm 关于enit0 中断计数
- mini2440-----keil for ARM之中断一
- ARM 7 用户模式下禁止/使能中断的一种方法--使用软中断 for Keil MDK
- mini2440-----keil for ARM之中断一
- 笔记:linux中实现fiq模式(关于arm中断,唤醒中断)
- linux中实现fiq模式(关于arm中断,唤醒中断)
- ARM 7 用户模式下禁止/使能中断的一种方法--使用软中断 for Keil MDK
- ARM 之FIQ(快速中断) IRQ(中断)
- 关于ARM的中断配置的一些体会!
- KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251
- 关于ARM中断处理的问题----《ARM嵌入式系统开发-软件设计与优化》第九章中疑问
- Keil for ARM, 配置gui
- 关于armhf (hard-float ABI for ARM)
- 关于 arm的中断系统 分类: 嵌入式开发学习 2011-04-11 19:30 560人阅读 评论(0) 收藏
- 关于Keil Unable to find ARM libraries...问题的解决方法
- 关于armhf (hard-float ABI for ARM)
- KEIL FOR ARM 下LPC22xx的外部RAM用法
- 关于VC串口控件MSComm响应中断函数次数不定的问题
- Keil for ARM/ Realview MDK 中用JTAG调试的方法 && keil c 的在线调试与断点设置
- mini2440----keil for ARM下的调试与下载环境的搭建。