登录/注册

stm32 103 pwm转电压输出

更多

在 STM32F103 系列微控制器中,通过 PWM 输出模拟电压是一种常见的应用,通常需要结合外部 RC 低通滤波器有源滤波电路 将 PWM 信号转换为平滑的直流电压。以下是实现方法的分步说明:


1. 硬件设计

RC 低通滤波器(基础方案)

有源滤波器(高阶滤波,推荐)


2. 软件配置(以 TIM2 通道1 为例)

步骤 1:初始化 PWM

#include "stm32f10x.h"

void PWM_Init(void) {
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;

    // 使能时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    // 配置 GPIO(PA0 为 TIM2_CH1)
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // 配置 TIM2 基础参数
    TIM_TimeBaseStructure.TIM_Period = 999;          // PWM周期 = (999+1)/时钟频率
    TIM_TimeBaseStructure.TIM_Prescaler = 71;        // 预分频72(72MHz/72=1MHz)
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

    // 配置 PWM 模式(通道1)
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = 0;               // 初始占空比
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC1Init(TIM2, &TIM_OCInitStructure);

    // 启动 TIM2
    TIM_Cmd(TIM2, ENABLE);
}

步骤 2:动态设置占空比

void Set_PWM_Voltage(uint16_t duty) {
    TIM_SetCompare1(TIM2, duty); // duty 范围 0~TIM_Period(例如 0~999)
}

3. 输出电压计算


4. 注意事项

  1. 滤波效果

    • RC 滤波的纹波与 PWM 频率和滤波截止频率相关,提高 PWM 频率可减少纹波。
    • 推荐 PWM 频率 ≥1kHz,截止频率 ≤100Hz。
  2. 负载影响

    • 若负载阻抗较小,需增加电压跟随器(如运放缓冲)避免电压跌落。
  3. 分辨率限制

    • PWM 分辨率由定时器位数决定(STM32F103 定时器为 16 位),实际可用分辨率受 PWM 频率限制。

5. 替代方案(如需更高精度)

通过上述步骤,您可以将 PWM 信号转换为平滑的模拟电压输出。如有问题,可进一步优化滤波参数或升级为高阶滤波电路。

深入解析LTC2645:一款高性能PWM电压输出DAC

深入解析LTC2645:一款高性能PWM转电压输出DAC 在电子设计领域

2026-04-13 11:45:12

STM32F103VET6

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

基于STM32F103PWM控制H桥驱动电路

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

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

STM32F103输出一路PWM波形,有完整源码。用示波器观察输出波形

用STM32F103输出一路PWM波形,有完整源码。用示波器观察输出波形

资料下载 洪茗苞 2022-01-14 16:06:05

STM32F103 PA8不能输出PWM波问题

在调试STM32F103单片机输出PWM波时,单独测试PA8和PA11输出

资料下载 陈文博 2021-12-02 19:36:05

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

STM32F103C8T6定时器TIM4通道1、2输出PWM这美妙的波形,真好,我他喵的终于把你弄出来了。

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

使用STM32F103RCT6和RBT6核心板实现PWM输出实验的程序和工程文件

本文档的主要内容详细介绍的是使用STM32F103RCT6和RBT6核心板实现PWM输出实验的程序和工程文件免费下载。

资料下载 1796295377 2019-08-01 08:00:00

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

本章STM32CUBEMX配置STM32F103输出PWM,并在示波器中

2022-11-30 14:12:45

怎么利用STM32F103输出PWM波形?

怎么利用STM32F103输出PWM波形?

2021-11-22 06:17:04

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

PWM是什么?STM32F103 PWM输出比较模式有哪几种?

2021-11-15 07:52:12

如何使用STM32F103输出PWM波?

如何使用STM32F103输出PWM波?

2021-11-15 06:45:05

STM32F103输出PWM波形

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

2021-08-17 09:01:27

STM32F103输出PWM波形

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

2021-08-17 06:29:16

stm32输出pwm波的程序

stm32输出pwm波的程序,目录一、PWM简介二、实验步骤1.示例2.

2021-08-09 09:02:59
7天热门专题 换一换
相关标签