打印

基于MINI STM32 的 PWM 输出实例

[复制链接]
9872|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiaxinhui|  楼主 | 2012-12-24 14:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本例实例是利用MINI STM32 硬件平台,实验STM32 控制器的PWM输出,
基于TIM3定时器,通过其4个通道输出4种不同占空比的PWM 信号。
实验环境:

通道1输出:频率为36KHZ  占空比50%


通道2输出:频率为36KHZ  占空比37.5%


通道3输出:频率为36KHZ  占空比25%


通道4输出:频率为36KHZ  占空比12.5%


工程文件源码: 通过定时TIM3 输出PWM信号.zip (623.38 KB)









沙发
楼主 我想实现蜂鸣器响的声音大小不同怎么解决?

使用特权

评论回复
板凳
jiaxinhui|  楼主 | 2013-3-6 08:11 | 只看该作者
降低电压呀

使用特权

评论回复
地板
jiaxinhui|  楼主 | 2013-3-9 17:25 | 只看该作者
没人顶啊,

使用特权

评论回复
5
lzq1804| | 2013-3-12 14:34 | 只看该作者

使用特权

评论回复
6
yangweiping| | 2013-3-20 19:44 | 只看该作者
楼主,能不能同一个定时器输出的pwm波频率和占空比都可调啊?

使用特权

评论回复
7
jiaxinhui|  楼主 | 2013-3-20 22:44 | 只看该作者
下面这段代码是设置输出频率的,你可以在程序中改变其中的值,可以试一下
/* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 50000;
  TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

使用特权

评论回复
8
杨爱林林| | 2013-4-2 08:51 | 只看该作者
用高级定时器 怎么做语言输出这块呢

使用特权

评论回复
9
杨爱林林| | 2013-4-2 08:51 | 只看该作者
语音输出

使用特权

评论回复
10
jiaxinhui|  楼主 | 2013-4-2 09:14 | 只看该作者
以前做过很简易的语音输出,就是通过PWM实现的,大致过程是:把语音数据通过按一定的采样率,规律的送到改变PWM的寄存器,然后在PWM输出端口加一个RC滤波电路,从这里输出的信号就是语音信号了。这是最简单的原始做法,如果在中间能把语音编码算法加进去,那音质更好,码率更低了。

使用特权

评论回复
11
qq20707| | 2013-4-2 19:16 | 只看该作者
hen hao

使用特权

评论回复
12
cjhk| | 2013-4-2 20:31 | 只看该作者
顶起来   问题有没有解决呢  楼主   呵呵

使用特权

评论回复
13
victory0702| | 2013-4-4 09:37 | 只看该作者
学习学习,谢谢楼主

使用特权

评论回复
14
tanmilaoshu| | 2013-4-15 11:04 | 只看该作者
谢谢楼主,学习了!

使用特权

评论回复
15
stevendaoyun| | 2013-4-15 15:44 | 只看该作者
昨天刚学了PWM输出,基于PWM的恒流源设计电路 楼主有吗?

使用特权

评论回复
16
jiaxinhui|  楼主 | 2013-4-15 15:49 | 只看该作者
stevendaoyun 发表于 2013-4-15 15:44
昨天刚学了PWM输出,基于PWM的恒流源设计电路 楼主有吗?

没有

使用特权

评论回复
17
14884036| | 2013-4-27 08:50 | 只看该作者
正在学习,顶一个

使用特权

评论回复
18
pinghpu| | 2013-4-28 09:58 | 只看该作者
  TIM_TimeBaseStructure.TIM_Period = 999;//预装载器
  TIM_TimeBaseStructure.TIM_Prescaler =44;//预分频
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);//关于时间基数单位

楼主帮忙看下,我用的是tim4的ch1,这样设置的信号输出频率为178.8Hz,我觉得应该是800Hz的,是哪儿设置错误么?

使用特权

评论回复
19
pinghpu| | 2013-4-28 10:10 | 只看该作者
TIM_TimeBaseStructure.TIM_Period = 999;//预装载器  TIM_TimeBaseStructure.TIM_Prescaler =44;//预分频  TIM_TimeBaseStructure.TIM_ClockDivision = 0;  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);//关于时间基数单位我使用tim4的ch1,输出信号频率为178.7Hz,为什么不是36M/(1000*45)=800呢?

使用特权

评论回复
20
jiaxinhui|  楼主 | 2013-4-28 10:29 | 只看该作者
pinghpu 发表于 2013-4-28 10:10
TIM_TimeBaseStructure.TIM_Period = 999;//预装载器  TIM_TimeBaseStructure.TIM_Prescaler =44;//预分频  ...

你的系统时钟是72MHZ吗?

使用特权

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

本版积分规则

个人签名:点击进入—》我的淘宝店 数据采集板 RS485 CAN 总线通讯评估套件

71

主题

921

帖子

9

粉丝