硬汉嵌入式论坛

 找回密码
 立即注册
查看: 287|回复: 1
收起左侧

[TIMER] STM32H743V 定时器级联无反应

[复制链接]

3

主题

5

回帖

14

积分

新手上路

积分
14
发表于 2024-1-22 18:55:53 | 显示全部楼层 |阅读模式
TIMER1时钟源为内部时钟,TIMER3,4时钟源为TIMER1,TIMER1,4,3无PWM输出

      
        /* 主模式TIM1 对系统时钟分频/
       
        htim1.Instance = TIM1;
        htim1.Init.Period = 255;
        htim1.Init.Prescaler = 0;
        htim1.Init.ClockDivision = 0;
        htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
        htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
        htim1.Init.RepetitionCounter = 4;
//        HAL_TIM_Base_Init(&htim1);
        HAL_TIM_PWM_Init(&htim1);
       
        sConfigOC.OCMode       = TIM_OCMODE_PWM1;
        sConfigOC.OCPolarity   = TIM_OCPOLARITY_HIGH;
        sConfigOC.Pulse        = 128;
        sConfigOC.OCNPolarity  = TIM_OCNPOLARITY_HIGH;
        sConfigOC.OCFastMode   = TIM_OCFAST_DISABLE;
        sConfigOC.OCIdleState  = TIM_OCIDLESTATE_RESET;
        sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
       if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  {
    /* Configuration Error */
//    Error_Handler();
  }
  
        //采用内部时钟给TIM1提供时钟源
        sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;                //        TIM1->SMCR &=  TIM_SMCR_SMS;
    HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig);
//        TIM1->SMCR &=  TIM_SMCR_SMS;
       
        /* Select the TRGO source */
        sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
        sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE;
        HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);
       
//        /* Reset the MMS Bits */
//        htim1.Instance ->CR2 &= ~TIM_CR2_MMS;
       
        __HAL_TIM_URS_ENABLE(&htim1);
        HAL_TIM_Base_Start(&htim1);


        /* 从模式TIM3 */

        htim3.Instance = TIM3;
        htim3.Init.Prescaler = 2;
        htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
        htim3.Init.Period = 0;                //配置为0 无波形
        htim3.Init.ClockDivision = 0;
        htim3.Init.RepetitionCounter = 0;



        HAL_TIM_PWM_Init(&htim3);
       
        sSlaveConfig4.SlaveMode = TIM_SLAVEMODE_GATED;                // TIM_SLAVEMODE_EXTERNAL1
        sSlaveConfig4.InputTrigger = TIM_TS_ITR0;
        HAL_TIM_SlaveConfigSynchro(&htim3, &sSlaveConfig4);



        sConfigOC.OCMode = TIM_OCMODE_PWM2;
        sConfigOC.Pulse = 1;
        sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
        sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
        HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4);
       
        __HAL_RCC_GPIOB_CLK_ENABLE();                /* 使能GPIO时钟 */
        __HAL_RCC_GPIOE_CLK_ENABLE();
       
        GPIO_InitStruct.Pin = GPIO_PIN_1;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        GPIO_InitStruct.Pull = GPIO_PULLUP;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
        GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
        HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
       
        GPIO_InitStruct.Pin = GPIO_PIN_14;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        GPIO_InitStruct.Pull = GPIO_PULLUP;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
        GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
        HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2024-1-23 08:08:19 | 显示全部楼层
我们是用的TIM+DMA控制任意GPIO做的脉冲输出

https://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

1.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 08:29 , Processed in 0.184803 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表