stm32F401在HAL库下的TIM2初始化产生PWM,后附直接寄存器

    这是我自己在使用定时器的记录。由于自己配置了很多次定时器,但是还是不会灵活使用,特意把自己心路例程记录下来。

#include "stm32f4xx_hal.h"        

TIM_HandleTypeDef htim2;            // 定义定时器处理结构(handle structure)

void TIM2_init()
{
    TIM_OC_InitTypeDef PWM_InitTypeDef;
	GPIO_InitTypeDef   GPIO_InitStruct;
	
	 __HAL_RCC_GPIOA_CLK_ENABLE();                            //开启PA时钟
	 __HAL_RCC_TIM2_CLK_ENABLE();                             //开启tim2时钟
  	
	
	GPIO_InitStruct.Pin = GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;                 //开启复用功能
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);                   //引脚初始化
	
	htim2.Instance = TIM2;                                   //设置TIM2时基 84M/(83+1)
  htim2.Init.Prescaler = 83                    //预分频 即主频分频之后送到tim计数的频率
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;  //向上计数
  htim2.Init.Period = 1000;                         // 计数 计数周期  1KHz的重装频率 
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)   // 函数   写入 
  {
    //Error_Handler();
  }
  
	PWM_InitTypeDef.OCMode=TIM_OCMODE_PWM1;           //TIM Output Compare and PWM modes  
	PWM_InitTypeDef.Pulse=700;                       //   设置 设置占空比  700/1000
	PWM_InitTypeDef.OCPolarity=TIM_OCPOLARITY_HIGH;
	PWM_InitTypeDef.OCFastMode=TIM_OCFAST_ENABLE;
	HAL_TIM_PWM_ConfigChannel(&htim2, &PWM_InitTypeDef, TIM_CHANNEL_2);
		
	
	 HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);   // pwm start
}



你可能感兴趣的:(stm32F401在HAL库下的TIM2初始化产生PWM,后附直接寄存器)