我想用定时器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);//设置睡眠定时器2sec
SysPowerMode(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;
}