硬汉嵌入式论坛

 找回密码
 立即注册
查看: 982|回复: 2
收起左侧

[有问必答] TIM1 PWM 动态变频

[复制链接]

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-1-7 21:42:40 | 显示全部楼层 |阅读模式
本帖最后由 thomaszhong 于 2023-1-7 22:00 编辑

1. STM32F407 定时器1配置   a.不使能自动重装,写ARR寄存器直接改变PWM频率。
   b.在TIM1_CC_IRQHandler()函数中直接修改ARR和CCR2的值。
问题:在由200KHz变成100KHz的时候,会出现一个奇怪的频率(大于200KHz)。

image.png

[C] 纯文本查看 复制代码
if(waveCtl->freq == 2)
{  //从200K切换到100K
    htim1.Instance->ARR = 1679;
    htim1.Instance->CNT = 0;
    htim1.Instance->CCR2 = (waveCtl->duty);
}


定时器基本配置
image.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2023-1-9 00:17:14 | 显示全部楼层
我认为测试出这个效果是正常的,关闭了自动重装那么你修改后就会立即生效,而你的中断进入后,PWM本身并不是停止的,一直都在工作。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2023-1-10 10:48:10 | 显示全部楼层
我觉得占空比可以能出现变化,频率应该在100K和200K之间吧。
image.png
根据这个图计数器CNT跟ARR相等的时候进入中断。然后再修改频率。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 22:43 , Processed in 0.209581 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表