LPC2388定时器中断,灯点亮后不熄灭,请教原因!

2019-03-25 20:19发布

#include "GPIO.h"

#include "lpc2388.h"

typedef unsigned int uint32;

#define Fpclk  (12000000)

#define LED_V6 (1<<1)  

volatile uint32 Timer0Cont = 0;
/*********************************************************************/
/*                                                                                                                                          /
/*                 定时器2中断服务函数                                                                                                      /
/*                                                                                                                                          /
/*                                                                                                                                          /
/********************************************************************/                                                                                                                                       
void  TIMER0_IRQ()  
{  
        int T0IR_Value = 0;

        T0IR_Value = T0IR;
        T0IR = T0IR_Value;
         
        VICVectAddr = 0;  

    Timer0Cont++;  
}  

/*********************************************************************/
/*                                                                                                                                          /
/*                 配置定时器0                                                                                                  /
/*                                                                                                                                          /
/*                                                                                                                                          /
/*********************************************************************/
void Init_timer0()
{
        PCONP |= (1<<1);        //确保功率控制打开Timer0.

        T0IR = 0xff;                //清通道0中断标志位
//        T2CTCR = 0x00;    //定时器模式;
        T0TC = 0;         //计数器清零;
        T0PR = 9;                         //10分频

        T0MR0 = Fpclk/2000;   //定时5ms进中断。
        T0MCR = 3;                        //引发中断和复位 MR0
        T0TCR = 0x01;

        VICIntEnClr = 0xffffffff;
    VICVectAddr = 0;
    VICIntSelect = 0;      // 所有中断通道设置为IRQ中断
       
        VICVectAddr4 = (uint32)TIMER0_IRQ; //中断处理函数;
        VICVectPri4 = 1;         //设定优先级;
        VICIntEnable = (1<<4); //设定中断源Timer2位置1;//        VICIntEnClr  = (1<<26);
       
}

/*********************************************************************/
/*                                                                                                                                          /
/*                 初始化GPIO                                                                                                          /
/*                                                                                                                                          /
/*                                                                                                                                          /
/*********************************************************************/
void LED_Init()
{
        PINSEL1 = 0;          //将P1.1引脚设置成GPIO
        IO1DIR = 0x02;          //将引脚p1.1设置成输出
        IO1SET = 0x02;          //将灯熄灭
}

/*********************************************************************/
/*                                                                                                                                          /
/*                 main函数                                                                                                          /
/*                                                                                                                                          /
/*                                                                                                                                          /
/*********************************************************************/
int main()
{
        //SystemInit();

        LED_Init();


        Init_timer0();

    while(1)  
    {  

        if(Timer0Cont<=64)  
        {  
                 IO1CLR = 0x02;
            }  
            else  
            {  

                IO1SET = 0x02;  
            }  

        }  
请教什么原因啊?头开始疼了!


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
industrial
1楼-- · 2019-03-26 01:10
_NXP LPC1000_ 你的中断服务函数名不加个 interrupt 0吗?       void  TIMER0_IRQ() interrupt 0
industrial
2楼-- · 2019-03-26 03:32
是加个 interrupt 1
xbhero
3楼-- · 2019-03-26 07:21
industrial 发表于 2014-8-24 15:39
你的中断服务函数名不加个 interrupt 0吗?       void  TIMER0_IRQ() interrupt 0

搞定了,是寄存器配置问题。

一周热门 更多>