OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5545|回复: 2

PWM互补输出遇到的问题,请教各位大大们

[复制链接]

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2021-3-30
在线时间
11 小时
发表于 2021-8-31 15:32:16 | 显示全部楼层 |阅读模式
1金钱
使用407调试pwm互补输出,主输出有波形,但是互补管脚一直没有输出,看了好久没发现问题,请教大大们void HAL_TIM1_CH2_PWM_Init(void)
{
        TIM_HandleTypeDef TIM1_Handler;
        TIM_OC_InitTypeDef TIM1_CH2Handler;
        TIM_MasterConfigTypeDef sMasterConfig;
          TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;

        //TIM1_Handler.Channel = HAL_TIM_ACTIVE_CHANNEL_1;
        TIM1_Handler.Instance=TIM1;                 
    TIM1_Handler.Init.Prescaler=84-1;   
    TIM1_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;
    TIM1_Handler.Init.Period=500-1;         
    TIM1_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
        TIM1_Handler.Init.RepetitionCounter = 0;
    HAL_TIM_PWM_Init(&TIM1_Handler);  

        sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
        sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
        if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
        {
                _Error_Handler(__FILE__, __LINE__);
        }

        sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
        sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
        sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
        sBreakDeadTimeConfig.DeadTime = 0;
        sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
        sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
        sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
        if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
        {
                _Error_Handler(__FILE__, __LINE__);
        }

    TIM1_CH2Handler.OCMode=TIM_OCMODE_PWM1;
    TIM1_CH2Handler.Pulse=(500-1)/2;           
    TIM1_CH2Handler.OCPolarity=TIM_OCPOLARITY_HIGH;
    TIM1_CH2Handler.OCIdleState = TIM_OCIDLESTATE_SET;
        TIM1_CH2Handler.OCFastMode = TIM_OCFAST_DISABLE;
    TIM1_CH2Handler.OCNPolarity = TIM_OCNPOLARITY_HIGH;
    TIM1_CH2Handler.OCNIdleState = TIM_OCNIDLESTATE_RESET;
        Print_PWMReg();

    HAL_TIM_PWM_ConfigChannel(&TIM1_Handler,&TIM1_CH2Handler,TIM_CHANNEL_2);
       
    HAL_TIM_PWM_Start(&TIM1_Handler,TIM_CHANNEL_2);
        HAL_TIMEx_PWMN_Start(&TIM1_Handler,TIM_CHANNEL_2);

        Print_PWMReg();
}

void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
        GPIO_InitTypeDef GPIO_Initure;               

        if(htim->Instance == TIM1)
        {
                __HAL_RCC_TIM1_CLK_ENABLE();               
                __HAL_RCC_GPIOE_CLK_ENABLE();                       
               
                GPIO_Initure.Pin= GPIO_PIN_11|GPIO_PIN_10;                  
                GPIO_Initure.Mode=GPIO_MODE_AF_PP;  
                GPIO_Initure.Pull=GPIO_PULLDOWN;         
                GPIO_Initure.Speed=GPIO_SPEED_HIGH;   
                GPIO_Initure.Alternate= GPIO_AF1_TIM1;       
                HAL_GPIO_Init(GPIOE,&GPIO_Initure);
        }
}




最佳答案

查看完整内容[请看2#楼]

自己来回复吧,问题已经解决了;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2021-3-30
在线时间
11 小时
 楼主| 发表于 2021-8-31 15:32:17 | 显示全部楼层
自己来回复吧,问题已经解决了;
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2021-3-30
在线时间
11 小时
 楼主| 发表于 2021-8-31 15:33:45 | 显示全部楼层
感觉不应该呀,pwm互补输出搞得有点复杂
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 02:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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