TI中文支持网
TI专业的中文技术问题搜集分享网站

为什么睡眠定时器唤醒后,我的定时器1没有工作了

我想用定时器1作个延时,

第一次运行程序时是可以正常工作的,

第二次从睡眠周期中唤醒就不工作了。

求大佬解答~

void main(void)
{halBoardInit();//初始化单片机InitSleepTimer();init_timer1();if(halRfInit()==FAILED) {HAL_ASSERT(FALSE);}if(basicRfInit(&basicRfConfig)==FAILED) {HAL_ASSERT(FALSE);} 
while (1) {Set_ST_Period(2);//设置睡眠定时器2secSysPowerMode(2);Red_LED=~Red_LED;while(!j);//j=1就溜走,j=1时大概是2s
...//后面的程序是轮询,不影响}
}

//初始化定时器1
 void init_timer1(void)
 {T1CTL = 0x0d;//128分频,自动重装 0x0000-0xFFFF 0.26s周期T1STAT= 0x21;//通道0,中断有效T1IE = 1;//开T1中断EA = 1;//开总中断
 }
//定时器1作延时的延时函数//定时器T1中断处理函数
#pragma vector = T1_VECTOR 
__interrupt void T1_ISR(void){ i++;T1IF = 0;if(i == 0x07)//4次接近1s{j=1;//计时到i=0;}else j = 0;
 } 

Viki Shi:

当系统进入PM2时,timer1会停止计数。这是因为低功耗模式下会关闭高速振荡器,而timer1就是用的高速振荡器。没记错的话,配置和计时器值将在该模式下保存

当你的程序从PM2中醒来时,timer1的计数器值与你进入PM2时的计数器值相同。因为在这段时间可能很长,所以基本没什么意义,你也可以选择在进入PM2之前停止Timer1,然后在出来时重新启动它。

赞(0)
未经允许不得转载:TI中文支持网 » 为什么睡眠定时器唤醒后,我的定时器1没有工作了
分享到: 更多 (0)