|
各位大侠,帮我看看 为什么进入不了快速中断
程序的初衷是 用外部中断0,触发一次 蜂鸣器P0.14响几声。可是我用高电平触发外部中断0竟无反应
/**************************************************************************************
* file name : gpio.c
* MCU: lpc2103 , IDE: keil 4 .
* haoshida
* EINT0 实现io口高电平递增
***************************************************************************************/
#include<lpc2103.h>
void delay_ms(int dly)
{
unsigned int i;
for(;dly>0;dly--)
{
for(i=0;i<5000;i++);
}
}
void Init_all(void)
{
PINSEL0 = 0x00000000;
PINSEL1 = (PINSEL1&0XFFFFFFFC)|0X01; //P0.16为外部中断
IODIR = 0X00000080;
EXTMODE = 0X01; //边沿触发
EXTPOLAR = 0X01; //上升沿触发
VICIntSelect = 1<<14; //分配为快速中断
EXTINT=0X01; //清楚INT0中断标志
VICIntEnable = 1<<14; //使能中断请求
//VICVectCntl0 = 0x20|14;
//VICVectAddr0 = (void)FRQ_Eint0;//设置中断服务程序地址
__enable_fiq(); //打开中断 __disable_irq();//关全局中断
//__enable_irq();
}
void __irq FRQ_Eint0(void)
{
IOPIN = 0X00000000;
delay_ms(500);
IOPIN = 0X00000080;
delay_ms(500);
IOPIN = 0X00000000;
delay_ms(500);
IOPIN = 0X00000080;
delay_ms(500);
IOPIN = 0X00000000;
delay_ms(500);
IOPIN = 0X00000080;
while((EXTINT&0X01)==0);
EXTINT = 0X01;
}
int main(void)
{
Init_all();
IOPIN = 0X00000000;
delay_ms(500);
IOPIN = 0X00000080;
while(1)
{
/*IOSET = 0X00000080;
delay_ms(100);
IOCLR = 0X00000080;
delay_ms(100);*/
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|