打印
[STM32F4]

TIM1的TIM1_TRGO和TIM1_TRGO2这两个中断无法产生

[复制链接]
853|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxrs|  楼主 | 2021-10-13 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, go
TIM1的TIM1_TRGO和TIM1_TRGO2这两个中断无法产生

使用特权

评论回复
沙发
jiajs| | 2021-10-13 22:12 | 只看该作者

楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
板凳
xxrs|  楼主 | 2021-10-13 22:14 | 只看该作者
因为个人应用场景的原因,需要用到TIM1的TRGO和TRGO2这两个触发器,我为这两个触发器配置了各种触发源,无一能够让触发器产生事件,有这方面经验的兄弟可否帮忙看看

使用特权

评论回复
地板
llljh| | 2021-10-13 22:16 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
5
xxrs|  楼主 | 2021-10-13 22:19 | 只看该作者
static void MX_TIM1_Init(void)
{

  /* USER CODE BEGIN TIM1_Init 0 */

  /* USER CODE END TIM1_Init 0 */
        TIM_OC_InitTypeDef TIM_CHxHandler;
        TIM_ClockConfigTypeDef sClockSourceConfig = {0};
        TIM_MasterConfigTypeDef sMasterConfig = {0};
        TIM_OC_InitTypeDef sConfigOC = {0};
        TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};

  /* USER CODE BEGIN TIM1_Init 1 */

  /* USER CODE END TIM1_Init 1 */
  htim1.Instance = TIM1;
  htim1.Init.Prescaler = 0;
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim1.Init.Period = 8000;
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim1.Init.RepetitionCounter = 0;
  htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
  {
    Error_Handler();
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;                                //用TIM1的UPDATE事件作为TRGO触发器的触发源
  sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 8000;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_5) != HAL_OK)
  {
    Error_Handler();
  }
  sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_ENABLE;
  sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE;
  sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
  sBreakDeadTimeConfig.DeadTime = 0;
  sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
  sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
  sBreakDeadTimeConfig.BreakFilter = 0;
  sBreakDeadTimeConfig.BreakAFMode = TIM_BREAK_AFMODE_INPUT;
  sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
  sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
  sBreakDeadTimeConfig.Break2Filter = 0;
  sBreakDeadTimeConfig.Break2AFMode = TIM_BREAK_AFMODE_INPUT;
  sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_ENABLE;
  if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
  {
    Error_Handler();
  }

        SET_BIT(TIM1->CR2, TIM_CR2_CCPC);                        //Enable Capture/Compare Preloaded Control
        __HAL_TIM_MOE_ENABLE(&htim1);                //Enable the TIM main Output.
        /* USER CODE BEGIN TIM1_Init 2 */
        __HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_TRIGGER);
        __HAL_TIM_ENABLE_IT(&htim1, TIM_FLAG_TRIGGER);        //??Update??,??PI??

        //__HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_UPDATE);
        //__HAL_TIM_ENABLE_IT(&htim1, TIM_FLAG_UPDATE);        //??Update??,??PI??

        /* USER CODE END TIM1_Init 2 */
          TIM1->CCER |= TIM_CCER_CC5E;
        __HAL_TIM_ENABLE(&htim1);                        //Enable the TIM peripheral.

}

使用特权

评论回复
6
xxrs|  楼主 | 2021-10-13 22:21 | 只看该作者
能进入中断吗

使用特权

评论回复
7
wyjie| | 2021-10-13 22:23 | 只看该作者
开启总中断了吗

使用特权

评论回复
8
juventus9554| | 2021-10-13 22:29 | 只看该作者
硬件上怎么接的

使用特权

评论回复
9
stly| | 2021-10-13 22:32 | 只看该作者
定时器产生TRGO一般是不会产生中断的。具体看各STM32参考手册。

使用特权

评论回复
10
chenjunt| | 2021-10-13 22:34 | 只看该作者
TIM1 and TIM8 DMA/interrupt enable register (TIMx_DIER)

使用特权

评论回复
11
chenjunt| | 2021-10-13 22:37 | 只看该作者
倒是外部的触发TRGO接到从定时器时,这个触发事件可以触发从定时器的相关触发中断。

使用特权

评论回复
12
xxrs|  楼主 | 2021-10-13 22:39 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
13
xiaoqizi| | 2021-11-4 10:28 | 只看该作者
这是两个什么中断啊

使用特权

评论回复
14
renzheshengui| | 2021-11-4 10:40 | 只看该作者
中断使能信号给了吗

使用特权

评论回复
15
wakayi| | 2021-11-4 10:41 | 只看该作者
配置上是没有问题的

使用特权

评论回复
16
wowu| | 2021-11-4 10:42 | 只看该作者
确认有中断源吗

使用特权

评论回复
17
木木guainv| | 2021-11-4 10:46 | 只看该作者
找到原因了没有

使用特权

评论回复
18
香水城| | 2021-11-4 16:53 | 只看该作者
你配置的TRGO是触发输出信号,本身还不是触发事件,当它跟别的定时器或外设相连时才变成 触发事件。

至于是否产生中断,就看有无相应的触发中断,这个结合手册定。 比方TRGO作为从定时器的触发输入时是可以产生触发中断的。

但只是配置TRGO并不能产生中断。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

405

主题

7415

帖子

1

粉丝