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
1楼-- · 2019-07-21 18:15
caosix 发表于 2017-9-26 17:15
莫非 是 你的 【复用】时钟 、功能 没打开 !?

额……感觉打开了啊……
39035605
2楼-- · 2019-07-21 21:45
本帖最后由 39035605 于 2017-9-26 21:04 编辑
gaoqianqian 发表于 2017-9-26 15:28
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
    GPIO_InitTypeDef GPIO_Initure;

我没看具体的PWM那个通道对应那个IO口,但你使能PA时钟__HAL_RCC_GPIOA_CLK_ENABLE();     初始化PE 口是有问题,HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);        你想用哪个IO口就初始化哪个时钟。
gaoqianqian
3楼-- · 2019-07-21 22:55
 精彩回答 2  元偷偷看……
呵呵呵开西寨
4楼-- · 2019-07-22 04:50
很简单的
hbyue
5楼-- · 2019-07-22 07:06
 精彩回答 2  元偷偷看……

一周热门 更多>