LPC2103 捕获寄存器用法求助
想用的2103的捕获功能来捕获某一路信号的高低电平持续时间,请问该怎么做啊,,我自己有写一段程序,在IAR中能看到其捕获到了,但是无法正常进入捕获处理函数中去,求指点,,,,,__irq __arm void irq_handler (void)
{
void (*interrupt_function)(); //中断入口函数
unsigned int vector;
vector = VICVectAddr; //获得中断向量
interrupt_function = (void(*)())vector; //将获得的中断向量地址赋给中断入口函数
if(interrupt_function != 0x00)
{
interrupt_function();//调用中断指向的函数//也即进入到Timer0Handler函数中
}
else
{
VICVectAddr = 0; //清除在VIC中的中断
}
}
void Init_timer0(void)
{
T0TCR = 2; //复位并关闭定时器
T0PR=99; //分频
//T0CTCR=0x02; 这一句也不知道该不该加,在另一个程序中,加了以后,TC就无法启动了
T0CCR =0x06; //捕获寄存器上升、下降沿捕获 并且中断
VICIntSelect_bit.TIMER0 = 0; // 配置为IRQ
VICVectAddr0 = (unsigned int) irq_down;
VICVectCntl0_bit.NUMBER = VIC_TIMER0; //中断号
VICVectCntl0_bit.ENABLED = 1; //使能中断地址
VICIntEnable_bit.TIMER0 = 1; //Timer0中断使能
T0TCR = 0x01; //开始定时器
}
/*中断处理函数*/
__irq __arm void irq_down (void)
{
// 清中断标志
T0IR_bit.MR0INT = 1;
down=T0CR0; //下降沿来临时把捕获寄存器的值送入down
//T0TCR = 2; //关闭并且复位定时计数器
flag2=1;
VICVectAddr = 0; //返回 main函数
}
void main ()
{
__disable_interrupt(); //关闭中断
VicInit(); //中断初始化
Init_pll();
Init_Gpio(); //端口初始化
Init_timer0(); //定时器一初始化
__enable_interrupt();//打开中断
while(T0IR!=0x10); //等待进入下降沿中断 此句不知道是否需要加 ,,是不是捕获到下降沿后,其会产生中断并自己进入到中断处理函数中?????
delay();
} 有没有人能帮帮忙看看啊,,,,,,,{:smile:}
页:
[1]