stm32运行一段后不进定时器中断,不知道是什么原因
目前遇到的问题,设备有一个led灯,程序正常运行时闪烁;主程序中开启看门狗了,LED闪烁是在定时器中断中完成的,但现在LED不闪了,程序还没有复位;我猜测,程序中主程序还在正常运行,只是不能进入定时器中断了;程序中一共开启了5个中断,中断优先级分组设置为 NVIC_PriorityGroup_0,一共开启5个中断,三个串口中断子优先级分别为1、2、3,一个定时器2中断子优先级为0,一个RTC中断子优先级为4;
定时器中断程序如下
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
{
//第一层函数使用。
if(systime2!=0xffffffff)
systime2++;
if(systime3!=0xffffffff)
systime3++;
if(systime4!=0xffffffff)
systime4++;
if(systime44!=0xffffffff)
systime44++;
if(systime45!=0xffffffff)
systime45++;
//ms延时函数用
if(systime10 <= 60000)
{
systime10++; //系统心跳时间累加
}
//-------------------------------------------------------
//-------------------------------------------------------
//LED灯状态控制
if((systime5 < led_en) && (led_en>0))
{
LED_EN_HIGH();//亮
}
else if(led_en<4000)
{
LED_EN_LOW(); //灭
}
systime5 ++;
if(systime5 >= (led_en<<1))
{
systime5 = 0;
}
//------------------------------------------------------------------------------
capture = TIM_GetCapture1(TIM2);
TIM_SetCompare1(TIM2, capture + CCR1_Val);
}
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
}
路过学习一下 路过学习一下 楼主解决了 我有时候也是而且我的中断 也有好多呢和你 有时候差不多 谢谢各位的关注 ddllxxrr 发表于 2014-8-3 06:18 static/image/common/back.gif
这个是优先级没有选对,你把定时器优先级设比定时器高,试下,再有用得着看门狗吗,闭了它 ...
没太看明白什么意思? 这个是优先级没有选对,你把定时器优先级设比定时器高,试下,再有用得着看门狗吗,闭了它 外面的世界很精 发表于 2014-8-2 15:27 static/image/common/back.gif
测试过看门狗,工作正常;这个问题不是上电就会有,有可能需要连续上电几天后才会出现,这个是最头疼的一点 ...
这个就很头疼了啊!我也没招了,希望你能早点找到问题所在! 本帖最后由 外面的世界很精 于 2014-8-2 15:28 编辑
测试过看门狗,工作正常;这个问题不是上电就会有,有可能需要连续上电几天后才会出现,这个是最头疼的一点,而且我没有手段重现问题 还有就是验证你的看门狗能否工作,就是不去喂狗,系统能否到时间自动复位。
页:
[1]
2