关于stm8s207的定时器同时进入中断的问题

调试stm8s207时候,发现拔掉电源后,再插上电源,程序莫名其妙的死了。起初以为是单片机没有复位,查看电容0.1uf,还好啊。没问题,配上10k的电阻t=rc=1ms,再说以前的都是这样的设计。后来发现我开通了两个定时器,T1和T2,并且两者的中断时间竟然一样,都是50ms,难道是一上电,同时进入中断卡死了。
函数名 :TIM1_Init
功能 :计数器管理
说明 :(64/Sys_Clk)*125*50=50ms //Sys_Clk/(7+1)x(9999+1) = 10ms//
*******************************************************************************/
void TIM1_Init(void)
{
TIM1_DeInit(); //定时器1相关寄存器复位
TIM1_TimeBaseInit(64, TIM1_COUNTERMODE_UP, 125*50, 0); //中断时间50ms 
// TIM1_TimeBaseInit(7, TIM1_COUNTERMODE_UP, 9999, 0); //中断时间10ms 
// TIM1_TimeBaseInit(8, TIM1_COUNTERMODE_UP, 1500, 0); //中断时间ms 
TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE); 
ITC_SetSoftwarePriority(ITC_IRQ_TIM1_OVF, ITC_PRIORITYLEVEL_2);//设置d定时器中断优先级 2 
TIM1_Cmd(ENABLE); //使能TIM1
}

void TIM2_Init(void)
{
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_PRESCALER_64, 125*50);//50ms中断
TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); //使能中断
ITC_SetSoftwarePriority(ITC_IRQ_TIM2_OVF, ITC_PRIORITYLEVEL_2);//设置d定时器中断优先级 2
TIM2_Cmd(ENABLE);//使能定时器1 
}
后来,我将定时器1中断时间改为10ms
void TIM1_Init(void)
{
TIM1_DeInit(); //定时器1相关寄存器复位
// TIM1_TimeBaseInit(64, TIM1_COUNTERMODE_UP, 125*50, 0); //中断时间50ms 
TIM1_TimeBaseInit(7, TIM1_COUNTERMODE_UP, 9999, 0); //中断时间10ms 
// TIM1_TimeBaseInit(8, TIM1_COUNTERMODE_UP, 1500, 0); //中断时间ms 
TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE); 
ITC_SetSoftwarePriority(ITC_IRQ_TIM1_OVF, ITC_PRIORITYLEVEL_2);//设置d定时器中断优先级 2 
TIM1_Cmd(ENABLE); //使能TIM1
}
然后卡死的现象消失了。

sitemap