STM8定时器4的使用问题
如题,小弟最近在搞STM8单片机的低功耗模式,其中用到了定时器4,但是有两个地方一直搞不懂,先上代码:以下是初始化函数:void Init_Timer4(void){ TIM4_DeInit(); TIM4_TimeBaseInit(TIM4_PRESCALER_128, 0xfe); TIM4_UpdateRequestConfig(TIM4_UPDATESOURCE_REGULAR); TIM4_SelectOnePulseMode(TIM4_OPMODE_REPETITIVE); TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);}以下是中断函数:@far @interrupt void TIM4_UPD_OVF_IRQHandler(void) //{ timecount++; if(timecount == 5000) // { timecount = 0; Second++; if(Second == 380)//30s { Second = 0; } }}按照事先设想,我在按键中断那里,加入了定时器启动功能,就是检测到按键按下,就执行:TIM4_Cmd(ENABLE);此时定时器确实启动了,也按30秒的时间产生中断,但是开启以后就停不下来啊,即使是加了:TIM4_Cmd(DISABLE); 一点用都没有,此时,我在30秒定时到以后,加了以下三句:TIM4_ClearITPendingBit(TIM4_IT_UPDATE);TIM4_ClearFlag(TIM4_FLAG_UPDATE);halt();好,现在时钟是被关闭了,系统也进入了低功耗状态,然而当我再次按按键使能定时器时,它就一直在计时,其它啥事都干不了,比如接收射频数据,就是说在进入定时器中断时,其它中断都无效了,这又是什么原因呢?按理说定时器不应该是和按键中断不互斥吗?求大神赐招,我只想干两件事:1、按下按键,使能定时器,计时30s,时间到以后彻底关闭,然后进入低功耗;2、在计时期间要随时接收射频数据(中断触发接收)。