外面的世界很精 发表于 2014-8-2 14:02:23

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);
}



sky-Hawk where 发表于 2015-8-11 08:50:57


路过学习一下

sky-Hawk where 发表于 2015-6-28 23:41:55

路过学习一下

sky-Hawk where 发表于 2015-6-27 22:19:58

楼主解决了 我有时候也是而且我的中断 也有好多呢和你 有时候差不多

外面的世界很精 发表于 2014-8-4 08:56:37

谢谢各位的关注

外面的世界很精 发表于 2014-8-4 08:55:40

ddllxxrr 发表于 2014-8-3 06:18 static/image/common/back.gif
这个是优先级没有选对,你把定时器优先级设比定时器高,试下,再有用得着看门狗吗,闭了它 ...

没太看明白什么意思?

ddllxxrr 发表于 2014-8-3 06:18:26

这个是优先级没有选对,你把定时器优先级设比定时器高,试下,再有用得着看门狗吗,闭了它

说不定 发表于 2014-8-2 15:40:06

外面的世界很精 发表于 2014-8-2 15:27 static/image/common/back.gif
测试过看门狗,工作正常;这个问题不是上电就会有,有可能需要连续上电几天后才会出现,这个是最头疼的一点 ...

这个就很头疼了啊!我也没招了,希望你能早点找到问题所在!

外面的世界很精 发表于 2014-8-2 15:27:15

本帖最后由 外面的世界很精 于 2014-8-2 15:28 编辑

测试过看门狗,工作正常;这个问题不是上电就会有,有可能需要连续上电几天后才会出现,这个是最头疼的一点,而且我没有手段重现问题

说不定 发表于 2014-8-2 15:06:52

还有就是验证你的看门狗能否工作,就是不去喂狗,系统能否到时间自动复位。
页: [1] 2
查看完整版本: stm32运行一段后不进定时器中断,不知道是什么原因

Baidu
map