基于MINI STM32 的 PWM 输出实例

[复制链接]
 楼主| jiaxinhui 发表于 2012-12-24 14:05 | 显示全部楼层 |阅读模式
本例实例是利用MINI STM32 硬件平台,实验STM32 控制器的PWM输出,
基于TIM3定时器,通过其4个通道输出4种不同占空比的PWM 信号。
实验环境: HUANJIN.jpg

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

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

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

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

工程文件源码: 通过定时TIM3 输出PWM信号.zip (623.38 KB, 下载次数: 903)









麦田里的守望者 发表于 2013-3-5 23:11 | 显示全部楼层
楼主 我想实现蜂鸣器响的声音大小不同怎么解决?
 楼主| jiaxinhui 发表于 2013-3-6 08:11 | 显示全部楼层
降低电压呀
 楼主| jiaxinhui 发表于 2013-3-9 17:25 | 显示全部楼层
没人顶啊,
lzq1804 发表于 2013-3-12 14:34 | 显示全部楼层
yangweiping 发表于 2013-3-20 19:44 | 显示全部楼层
楼主,能不能同一个定时器输出的pwm波频率和占空比都可调啊?
 楼主| 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);
杨爱林林 发表于 2013-4-2 08:51 | 显示全部楼层
用高级定时器 怎么做语言输出这块呢
杨爱林林 发表于 2013-4-2 08:51 | 显示全部楼层
语音输出
 楼主| jiaxinhui 发表于 2013-4-2 09:14 | 显示全部楼层
以前做过很简易的语音输出,就是通过PWM实现的,大致过程是:把语音数据通过按一定的采样率,规律的送到改变PWM的寄存器,然后在PWM输出端口加一个RC滤波电路,从这里输出的信号就是语音信号了。这是最简单的原始做法,如果在中间能把语音编码算法加进去,那音质更好,码率更低了。
qq20707 发表于 2013-4-2 19:16 | 显示全部楼层
hen hao
cjhk 发表于 2013-4-2 20:31 | 显示全部楼层
顶起来   问题有没有解决呢  楼主   呵呵
victory0702 发表于 2013-4-4 09:37 | 显示全部楼层
学习学习,谢谢楼主
tanmilaoshu 发表于 2013-4-15 11:04 | 显示全部楼层
谢谢楼主,学习了!
stevendaoyun 发表于 2013-4-15 15:44 | 显示全部楼层
昨天刚学了PWM输出,基于PWM的恒流源设计电路 楼主有吗?
 楼主| jiaxinhui 发表于 2013-4-15 15:49 | 显示全部楼层
stevendaoyun 发表于 2013-4-15 15:44
昨天刚学了PWM输出,基于PWM的恒流源设计电路 楼主有吗?

没有
14884036 发表于 2013-4-27 08:50 | 显示全部楼层
正在学习,顶一个
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的,是哪儿设置错误么?
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呢?
 楼主| 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 总线通讯评估套件

72

主题

922

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:点击进入—》我的淘宝店 数据采集板 RS485 CAN 总线通讯评估套件

72

主题

922

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部