OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5459|回复: 3

如何使用PWM功能输出不同频率的方波,要求在0 ~ 256HZ,连续可调

[复制链接]

60

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2014-2-28
在线时间
7 小时
发表于 2015-4-7 10:11:07 | 显示全部楼层 |阅读模式
5金钱
在网上百度了一下资料,有的是利用不同的定时器输出几个固定的频率
但是,我想利用stm32的IO输出不同频率的可调方波,就像信号发生器那样,来回可调

最佳答案

查看完整内容[请看2#楼]

单独改变ARR和CCRx即可,如果要求精度更高,PSC也要做相应调节,但不必重新初始化定时器
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5782
金钱
5782
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-4-7 10:11:08 | 显示全部楼层
单独改变ARR和CCRx即可,如果要求精度更高,PSC也要做相应调节,但不必重新初始化定时器
回复

使用道具 举报

60

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
503
金钱
503
注册时间
2014-2-28
在线时间
7 小时
 楼主| 发表于 2015-4-7 10:20:31 | 显示全部楼层
我的思路是做一个函数去改变自动重装载寄存器的值,通过改变周期来改变频率
但是,这样做是不是每次改变频率都要去重新初始化定时器的配置
TIM_TimeBaseStructure.TIM_Period = arr;   //////////////直接改变arr的值,达到改变PWM频率的效果
TIM_TimeBaseStructure.TIM_Prescaler =psc; 
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-7
在线时间
0 小时
发表于 2015-4-7 17:07:58 | 显示全部楼层
如果需要扫频,用定时器改变ARR的值,扫频精度可以设置;如果只需要调节几个固定的值,按键可以实现
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 22:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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