登录/注册

stm32f103pwm比较模式

更多

STM32F103 的 PWM 比较模式配置及工作原理如下:


PWM 比较模式核心概念

STM32F103 的定时器(如 TIM1-TIM4)通过 比较寄存器(CCRx)自动重载寄存器(ARR) 生成 PWM 信号。其核心是 比较匹配机制:当计数器(CNT)的值与 CCRx 的值匹配时,输出电平翻转,从而控制 PWM 的占空比。


关键配置步骤

  1. 定时器基础配置

    • 时钟源:使能定时器时钟(如 APB1/APB2)。
    • 预分频器(PSC):设置时钟分频,控制计数频率。
    • 自动重载值(ARR):定义 PWM 周期(PWM 频率 = 定时器时钟 / (ARR + 1))。
  2. PWM 模式选择

    • PWM 模式 1:CNT < CCRx 时输出有效电平(高/低),否则无效。
    • PWM 模式 2:CNT < CCRx 时输出无效电平,否则有效。
    • 通过 TIMx_CCMRx 寄存器配置(如 OC1M = 0b1100b111)。
  3. 比较寄存器(CCRx)设置

    • 写入 TIMx_CCRx 寄存器,决定占空比(占空比 = CCRx / (ARR + 1))。
  4. 输出极性配置

    • 通过 TIMx_CCER 寄存器设置 CCxP 位,控制 PWM 初始电平高低。
  5. 使能输出与启动定时器

    • 使能通道输出(TIMx_CCER.CCxE = 1)。
    • 启动定时器(TIMx_CR1.CEN = 1)。

代码示例(标准外设库)

// 初始化 TIM3 通道1(PA6)为 PWM 输出
void PWM_Init() {
    GPIO_InitTypeDef GPIO_InitStruct;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
    TIM_OCInitTypeDef TIM_OCInitStruct;

    // 1. 使能时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

    // 2. 配置 PA6 为复用推挽输出
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    // 3. 定时器基础配置(周期 = 1 kHz)
    TIM_TimeBaseStruct.TIM_Period = 999;        // ARR = 999
    TIM_TimeBaseStruct.TIM_Prescaler = 71;      // 72MHz/(71+1) = 1MHz → 1ms周期
    TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStruct);

    // 4. PWM 模式配置(通道1)
    TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;      // 选择 PWM 模式1
    TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStruct.TIM_Pulse = 500;                  // 初始占空比 50%(CCR=500)
    TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC1Init(TIM3, &TIM_OCInitStruct);

    // 5. 启动定时器
    TIM_Cmd(TIM3, ENABLE);
}

高级功能


常见问题

通过合理配置比较寄存器和 PWM 模式,可实现精准的脉宽调制输出。

STM32F103VET6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F103RCT6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32CubeIDE下配置STM32F103输出带死区的互补PWM

STM32F103的TIM1和TIM8是高级定时器,可以产生嵌入死区时间的互补PWM波,使用STM32CubeIDE完成相关配置,可以直接生成代

2023-11-01 09:41:07

STM32F103xC,STM32F103xD,STM32F103xE中文资料

电子发烧友网站提供《STM32F103xC,STM32F103xD,STM32F103xE中文资料.pdf》资料免费下载

资料下载 龙江阿东 2024-06-17 14:12:11

基于STM32F103PWM控制H桥驱动电路

通过stm32f103单片机io口引脚输出pwm信号控制两个桥电路驱动电机

资料下载 下雨天_266 2022-10-24 11:25:45

基于STM32f103的输入捕获测频率和占空比

基于STM32f103的输入捕获测频率和占空比

资料下载 shyshyshy 2021-08-02 10:10:24

基于STM32f103的FFT频率测试程序下载

基于STM32f103的FFT频率测试程序下载

资料下载 shyshyshy 2021-08-02 10:07:20

基于ARM的32位MCU芯片STM32F103x4/103x6

基于ARM的32位MCU芯片STM32F103x4/103x6

资料下载 jf_42320578 2021-05-21 15:32:12

STM32CUBEIDE(11)----输出PWM及修改PWM频率与占空比

本章STM32CUBEMX配置STM32F103输出PWM,并在示波器中查看效果。

2022-11-30 14:12:45

STM32F103 PWM介绍

一、STM32F103 PWM介绍STM32F1除了基本定时器TIM6和TIM7,其他定时器都可以产生

2022-01-19 07:13:06

如何利用STM32F103的输入捕获模式去测量PWM输出波形频率呢

输入捕获模式有何功能?如何利用STM32F103的输入捕获模式去测量PWM

2021-12-13 07:13:52

STM32F103 PWM输出配置有哪些步骤呢

PWM是什么?STM32F103 PWM输出比较

2021-11-15 07:52:12

STM32F103输出PWM波形

STM32的PWM和DAC练习STM32F103输出一路PWM波形用

2021-08-17 09:01:27

使用STM32F103pwm控制电机

使用STM32F103pwm控制电机上一期我们讲了STM32F103pwm控制电机 ,这一期我教大家如何接线传送门:资源概述开发板:正点原子STM32F103

2021-08-11 07:22:05

stm32f030和stm32f103功能差异

stm32f030和stm32f103功能差异主要表现在哪?

2021-07-22 09:35:47

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