STM32F767 TIM1 产生PWM输出

2019-07-20 11:41发布

啊啊啊啊~想用STM32F76 定时器产生PWM输出,例程是用TIM3的通道4来产生的,在管脚处产生PWM输出信号,然后我想换成TIM1的通道1产生,但是死活不对……好几天真的是不知道什么原因……求大家帮忙……

#include "tim.h"

TIM_HandleTypeDef htim1;

/* TIM1 init function */
void MX_TIM1_Init(void)
{

  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_OC_InitTypeDef sConfigOC;

  htim1.Instance = TIM1;
  htim1.Init.Prescaler = 107;
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim1.Init.Period = 124;
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim1.Init.RepetitionCounter = 0;
HAL_TIM_PWM_DeInit(&htim1);
  HAL_TIM_PWM_Init(&htim1);


  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);


  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 63;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
  sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);

HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
}



void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* timHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_TIM1_CLK_ENABLE();                     
__HAL_RCC_GPIOA_CLK_ENABLE();  

    /**TIM1 GPIO Configuration   
    PE9     ------> TIM1_CH1
               
    */
    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
    HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
gaoqianqian
2019-07-21 09:13
39035605 发表于 2017-9-26 13:08
你程序中的IO口初始化这里  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);  有问题。。。仔细参考例程中的初始 ...

void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
    GPIO_InitTypeDef GPIO_Initure;
        __HAL_RCC_TIM3_CLK_ENABLE();                       
    __HAL_RCC_GPIOB_CLK_ENABLE();                       
       
    GPIO_Initure.Pin=GPIO_PIN_1;                  
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;         
    GPIO_Initure.Pull=GPIO_PULLUP;         
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;   
   GPIO_Initure.Alternate=GPIO_AF2_TIM3;       
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);
}
这个是例程的初始化部分,我的程序这里是想用PE9作为管脚输出的,哪里不对呢

一周热门 更多>