天嵌 ARM开发社区

 找回密码
 注册
查看: 2705|回复: 3

求高手 在线等 定时器问题

[复制链接]
庸人自扰 发表于 2012-3-7 11:42:13 | 显示全部楼层 |阅读模式
刚才发了没人回答啊,着急啊,求高手指教
郁闷的是,单独用定时器0,正常,单独用定时器1也正常,我想同时用两个,定的时间也不一样,为什么两个一起就不进中断了呢


        MMU_Init();
       

        time0_init0(1000);//初始化定时器0,1000没用不过也不影响
        time1_init1(1000);//初始化定时器1
        ClearPending(BIT_TIMER0);//清中断标志
        ClearPending(BIT_TIMER1);//清中断标志
        EnableIrq(BIT_TIMER0);//开定时器0中断
        EnableIrq(BIT_TIMER1);//开定时器1中断
        pISR_TIMER0 = (U32)Timerz0;
        pISR_TIMER1 = (U32)Timerz1;
        while(1);       

}
void time0_init0(U32 freq)
{

        rTCFG0 |=0xf9;
        rTCFG1 |=0x01;
        rTCNTB0 = 25000;
        rTCON |=(1<<1);
        rTCON |= 0x09;
}
void time1_init1(U32 freq)
{
        rTCFG0 |=0xf9;
        rTCFG1 |=(1<<8);
        rTCNTB1 = 2000;
        rTCON |=(0x1<<9);
        rTCON |= (0x09<<8);
}
void __irq Timerz0(void)
{
Uart_Printf("\n 定时器0发生第%d次中断",++counter);
ClearPending(BIT_TIMER0);
       
}
void __irq Timerz1(void)
{       
Uart_Printf("\n 定时器1发生第%d次中断",++counter1);
ClearPending(BIT_TIMER1);
       
}
raominping 发表于 2012-3-7 12:38:22 | 显示全部楼层
你进入一个中断程序后,禁止中断,最后再打开试试。
 楼主| 庸人自扰 发表于 2012-3-7 13:21:18 | 显示全部楼层
raominping 发表于 2012-3-7 12:38
你进入一个中断程序后,禁止中断,最后再打开试试。

你好  我改了一下  不是这个问题 但是有新的问题请教下,
rTCON = (0x09<<8);之前我用的是rTCON |=(0x09<<8);我的想法是不影响其他定时器设置的情况下 只设置定时器1的   可是我反复了几次  如果用“|”就不好使 不进中断 如果直接赋值  就会进定时器中断  单独了定时器0和1 都好使   同样情况下 初始化都用“|” 两个都不进中断  两个都不用"|"只进第二个中断 也就是只进定时器1的中断  这个我可以理解成后初始化的定时器1 所以rTCON的值就只开了定时器1  但是不明白为什么用了“|”  两个都不开。
 楼主| 庸人自扰 发表于 2012-3-7 13:53:00 | 显示全部楼层
庸人自扰 发表于 2012-3-7 13:21
你好  我改了一下  不是这个问题 但是有新的问题请教下,
rTCON = (0x09

改好了  是rTCON没设置明白    还是谢谢你  等了半天就你回复了  谢谢帮忙  贴出来改后正确的
MMU_Init();

time0_init0();
time1_init1();
ClearPending(BIT_TIMER0);
ClearPending(BIT_TIMER1);
EnableIrq(BIT_TIMER0);
EnableIrq(BIT_TIMER1);
pISR_TIMER0 = (U32)Timerz0;
pISR_TIMER1 = (U32)Timerz1;
while(1);
}
void time0_init0()
{
rTCFG0 |=0xf9;
rTCFG1 |=0x01;
rTCNTB0 = 25000;
rTCON &=~0x1f;
rTCON |=0xb;
rTCON &= ~2;
}
void time1_init1()
{
rTCFG0 |=0xf9;
rTCFG1 |=(1<<8);
rTCNTB1 = 2000;
rTCON &=~0xf00;
rTCON |=(0xb<<8);
rTCON &=~(0x1<<9);
}
void __irq Timerz0(void)
{
Uart_Printf("\n 定时器0发生第%d次中断",++counter);
ClearPending(BIT_TIMER0);

}
void __irq Timerz1(void)
{
Uart_Printf("\n 定时器1发生第%d次中断",++counter1);
ClearPending(BIT_TIMER1);

}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-11-1 08:11 , Processed in 1.046875 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表