打印
[STM32F7]

利用 PWM 实现 LED 调光与电机控制

[复制链接]
83|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2024-12-11 11:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PWM(脉宽调制)通过调节高电平时间占整个周期的比例(占空比),控制负载设备的功率。

2.1 PWM 基本原理
PWM 信号的频率决定了调制速度。
占空比(Duty Cycle)决定了输出的平均电压:
0% 占空比:信号始终为低。
50% 占空比:高低电平时间相等。
100% 占空比:信号始终为高。
2.2 PWM 配置步骤
1. STM32CubeMX 配置
选择通用定时器(如 TIM3),设置工作模式为 PWM Generation。
选择对应的通道(如 CH1)。
配置频率和占空比:
频率 = 时钟频率 / (预分频器 + 1) / (ARR + 1)。
占空比 = 比较值(CCR) / 自动重装值(ARR)。
使能 GPIO 复用功能,连接到 TIM 的输出通道(如 PA6 对应 TIM3_CH1)。
生成代码。
2. 使用 HAL 库初始化 PWM
示例代码:

c
复制代码
// 初始化 TIM3 PWM
TIM_HandleTypeDef htim3;
htim3.Instance = TIM3;
htim3.Init.Prescaler = 7999;               // 预分频器
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 999;                   // 自动重装值
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_PWM_Init(&htim3);

// 配置 PWM 通道
TIM_OC_InitTypeDef sConfigOC;
sConfigOC.OCMode = TIM_OCMODE_PWM1;        // PWM 模式 1
sConfigOC.Pulse = 500;                     // 占空比 50%
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1);

// 启动 PWM
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

162

主题

1001

帖子

0

粉丝