yllqabz 发表于 2019-2-17 16:05:10

定时器中断问题

本人选用了两个定时器,分别为TIM1和TIM3,其产生捕获中断和更新中断,现在遇到一个问题:任意只开启一个中断,程序正常运行,两个中断都打开则程序只会进一次主循环(while死循环)?查了半天都没有发现原因,是不能这样用吗?还是其他原因呢
配置如下:
void MX_TIM3_Init(void)
{
      TIM_MasterConfigTypeDef sMasterConfig;
        TIM_ClockConfigTypeDef sClockSourceConfig;
       
      htim3.Instance = TIM3;
        htim3.Init.Period = T3_PERIOD;
      htim3.Init.Prescaler = T3_PRESCALER;
      htim3.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1;
      htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
        HAL_TIM_Base_Init(&htim3);
       
        sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
      sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
      HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig);
}


void MX_TIM1_Init(void)
{
      TIM_MasterConfigTypeDef sMasterConfig;
      TIM_OC_InitTypeDef sConfigOC;
        TIM_ClockConfigTypeDef sClockSourceConfig;
        TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
       
      htim1.Instance = TIM1;
        htim1.Init.Period = T_PERIOD;
      htim1.Init.Prescaler = T_PRESCALER;
      htim1.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1;
      htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
        htim1.Init.RepetitionCounter = T_REPETITIONCOUNTER;
        HAL_TIM_Base_Init(&htim1);
       
        sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC3REF;
      sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
      HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);
       
        sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
      HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig);

}

void TIM1_CC_IRQHandler(void)
{
        HAL_TIM_IRQHandler(&htim1);
}


void TIM3_IRQHandler(void)
{
      HAL_TIM_IRQHandler(&htim3);
}



suuy79-281526 发表于 2019-2-18 10:37:15

配置错误

yllqabz 发表于 2019-2-28 11:38:38

suuy79-281526 发表于 2019-2-18 10:37
配置错误

哪里有错位?没看出来。能具体点吗
页: [1]
查看完整版本: 定时器中断问题