碰到一个奇怪的问题,现在定时器0和2都可以正常设置工作 .而对1和3的设置都无效;定时器1 ,3 的控制寄存器仍旧维持上电值. 请问这是什么情况??
void Timer2_init(void)
{
_TIMER_RESET(TIMER2);
TIMER2->TCSR = TIMER_TCSR_CEN_Msk | TIMER_TCSR_IE_Msk | TIMER_TCSR_MODE_PERIODIC | TIMER_TCSR_TDR_EN_Msk |
TIMER_TCSR_PRESCALE(22);
TIMER2->TCMPR = 10; //定时时长 timerover us
NVIC_EnableIRQ(TMR2_IRQn);
_TIMER_CLEAR_CMP_INT_FLAG(TIMER2);
}
void TMR0_Init(void)
{
TIMER0->TCSR = TIMER_TCSR_INIT_IE(22);
TIMER0->TCMPR = 2000; //定时器最小间隔为1us,定时2000,即为间隔2ms一次
/* 使能TMR0中断 */
NVIC_EnableIRQ(TMR0_IRQn);
}
void TMR1_Init(void)
{
TIMER1->TCSR = TIMER_TCSR_INIT_IE(22);
TIMER1->TCMPR = 2000; //定时器最小间隔为1us,定时2000,即为间隔2ms一次
/* 使能TMR0中断 */
NVIC_EnableIRQ(TMR1_IRQn);
}
void TMR3_Init(void)
{
_TIMER_RESET(TIMER3);
TIMER3->TCMPR = 100000;
TIMER3->TCSR = TIMER_TCSR_MODE_CONTINUOUS | TIMER_TCSR_TDR_EN_Msk | TIMER_TCSR_PRESCALE(22);
}
用nulink在线调试后发现,TIMER1 和TIMER3的TCSR值还是上电状态. 而TIMER0 TIMER2,的设置却正常;
查看了bsp自带的timer例程,他4个定时器都用到了.单步调试发现 ,他的各个寄存器都是正常的, 是不是我的写法有问题?
|