登录/注册

STM32F4 TIM5 PWM输出

更多

在STM32F4系列中配置TIM5输出PWM信号的步骤如下(以标准库或HAL库为例):


1. 基本配置步骤

1.1 使能时钟

// 标准库
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 以PA0为例

// HAL库
__HAL_RCC_TIM5_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();

1.2 配置GPIO为复用功能

将GPIO设置为复用推挽输出模式,并映射到TIM5通道。

// 标准库
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;       // 以PA0(TIM5_CH1)为例
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_TIM5); // 复用功能映射

// HAL库
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF2_TIM5; // TIM5的复用功能号
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

1.3 配置TIM5定时器

设置预分频器(PSC)和自动重装载值(ARR),决定PWM频率。

// 标准库
TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
TIM_TimeBaseStruct.TIM_Prescaler = 84 - 1;         // 分频系数,假设系统时钟84MHz
TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStruct.TIM_Period = 1000 - 1;          // ARR值,决定PWM周期
TIM_TimeBaseStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStruct);

// HAL库
TIM_HandleTypeDef htim5;
htim5.Instance = TIM5;
htim5.Init.Prescaler = 84 - 1;
htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
htim5.Init.Period = 1000 - 1;
htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_PWM_Init(&htim5);

1.4 配置PWM通道

设置PWM模式(如模式1)和占空比(CCR值)。

// 标准库
TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse = 500; // 初始占空比50%(CCR=500,ARR=1000)
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM5, &TIM_OCInitStruct); // 通道1

// HAL库
TIM_OC_InitTypeDef sConfigOC = {0};
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 500;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(&htim5, &sConfigOC, TIM_CHANNEL_1);

1.5 启动PWM输出

// 标准库
TIM_Cmd(TIM5, ENABLE);
TIM_CtrlPWMOutputs(TIM5, ENABLE); // 高级定时器需要,TIM5不需要这行

// HAL库
HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_1);

2. PWM频率和占空比计算


3. 示例代码(HAL库)

// 初始化函数
void MX_TIM5_Init(void) {
  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};

  htim5.Instance = TIM5;
  htim5.Init.Prescaler = 84 - 1;      // 分频后时钟1MHz
  htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim5.Init.Period = 1000 - 1;       // PWM频率 = 1MHz / 1000 = 1kHz
  htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  HAL_TIM_PWM_Init(&htim5);

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

  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 500;             // 50%占空比
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  HAL_TIM_PWM_ConfigChannel(&htim5, &sConfigOC, TIM_CHANNEL_1);

  HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_1);
}

4. 注意事项

stm32f407zgt6在studio下tim44PWM通道无输出的原因?

在stm32f4的PD12~15的4个引脚输出PWM波(空闲高电平,匹配

2023-09-03 14:52:41

STM32F44个引脚无法输出PWM波请问问题出在哪里

在stm32f4的PD12~15的4个引脚输出PWM波(空闲高电平,匹配

2022-08-16 11:46:10

STM32F4的通用定时器包括哪些呢

定时器STM32F4的通用定时器包括TIM(25)**和**TIM(914),包含一个16位或32位的自动重载计数器(CNT),由可编程预分频器

2022-02-28 06:37:07

STM32F103C8T6定时器TIM4通道1、2输出PWM

STM32F103C8T6定时器TIM4通道1、2输出PWM这美妙的波形

资料下载 吴湛 2021-12-02 18:21:10

STM32F4 (hal库)ADC+TIM1+DAC的配置

STM32F4 (hal库)ADC+TIM1+DAC的配置

资料下载 佚名 2021-11-30 11:36:04

STM32F4 PWM-DAC实验例程

STM32F4 PWM-DAC实验例程(电源技术是sci吗)-STM32F4 PWM

资料下载 佚名 2021-09-16 10:14:07

STM32F4内部Flash实验例程

STM32F4内部Flash实验例程(嵌入式开发版哪个好)-STM32F4内部Flash实验例程,有需要的可以参考!

资料下载 无人岛 2021-07-30 15:58:01

stm32f4舵机控制代码

stm32f4舵机控制代码资料免费下载。

资料下载 姚小熊27 2021-04-26 09:33:24

STM32f4输出pwm波相关资料分享

STM32f4日记1之输出pwm波(用按键调整频率,占空比,可用示波器观察结果)选用板子:正点原子

2022-01-13 08:11:56

STM32F4定时器TIM(1)控制输出

STM32F4 定时器TIM(1)定时器控制输出【使用库函数】 高级时钟控制定时器TI

2021-08-19 08:45:39

STM32F4 32位定时器TIM2、TIM5的使用

**STM32F4 32位定时器TIM2、TIM5的使用(附STM32F407----

2021-08-10 06:08:16

STM32_ TIM输出PWM波形

STM32_TIM输出PWM波形

2020-04-08 11:09:32

STM32F0xx_ TIM输出PWM配置详细过程

STM32F0xx_TIM输出PWM配置详细过程

2020-04-07 11:28:21

STM32F4_TIM输出PWM波形

STM32F4_TIM输出PWM波形(可调频率、占空比)

2020-04-07 11:13:24

STM32F4_TIM输出PWM波形 (可调频率、占空比)

STM32F4_TIM输出PWM波形(可调频率、占空比)

2020-03-24 11:26:07

7天热门专题 换一换
相关标签