2490|3

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

LPC2388定时器中断,灯点亮后不熄灭,请教原因! [复制链接]

#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;  
            }  

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


此帖出自NXP MCU论坛

最新回复

是加个 interrupt 1  详情 回复 发表于 2014-8-24 15:40
点赞 关注
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你的中断服务函数名不加个 interrupt 0吗?       void  TIMER0_IRQ() interrupt 0
此帖出自NXP MCU论坛

点评

搞定了,是寄存器配置问题。  详情 回复 发表于 2014-8-27 19:01
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
是加个 interrupt 1
此帖出自NXP MCU论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

4
 
industrial 发表于 2014-8-24 15:39
你的中断服务函数名不加个 interrupt 0吗?       void  TIMER0_IRQ() interrupt 0

搞定了,是寄存器配置问题。
此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表