你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 5596|回复: 3

【ST公益分享】 STM8 - PWM

[复制链接]

10

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
2019-8-1
发表于 2011-3-23 23:56:13 | 显示全部楼层 |阅读模式
在单片机应用系统中,也常常会用到PWM信号输出,例如电机转速的控制。现在很多高档的单片机也都集成了PWM功能模块,方便用户的应用。对于PWM信号,主要涉及到两个概念,一个就是PWM信号的周期或频率,另一个就是PWM信号的占空比。例如一个频率为1KHZ,占空比为30%,有效信号为1的PWM信号,在用示波器测量时,就是高电平的时间为300uS,低电平的时间为700uS的周期波形。
在单片机中实现PWM信号的功能模块,实际上就是带比较器的计数器模块。首先该计数器循环计数,例如从0到N,那么这个N就决定了PWM的周 期,PWM周期=(N+1)*计数器时钟的周期。在计数器模块中一定还有一个比较器,比较器有2个输入,一个就是计数器的当前值,另一个是可以设置的数, 这个数来自一个比较寄存器。当计数器的值小于比较寄存器的值时,输出为1(可以设置为0),当计数器的值大于或等于比较寄存器的值时,输出为0(也可设置 为1,与前面对应)。
了解了这个基本原理后,我们就可以使用STM8单片机中的PWM模块了。下面的实验程序首先将定时器2的通道2设置成PWM输出方式,然后通过设置 自动装载寄存器TIM2_CCR2,决定PWM信号的周期。在程序的主循环中,循环修改占空比,先是从0逐渐递增到128,然后再从128递减到0。
当把下面的程序在ST的三合一板上运行时,可以看到发光二极管LD1逐渐变亮,然后又逐渐变暗,就这样循环往复。如果用示波器看,可以看到驱动LD1的信号波形的占空比从0变到50%,然后又从50%变到0。
同样还是利用ST的开发工具,生成一个C语言程序的框架,然后修改其中的main.c,修改后的代码如下。
 
//  程序描述:用PWM输出驱动LED
 
#include "STM8S207C_S.h"
 
void CLK_Init(void);
void TIM_Init(void);
 
// 函数功能:延时函数
// 输入参数:ms -- 要延时的毫秒数,这里假设CPU的主频为2MHZ
// 输出参数:无
// 返 回 值:无
// 备    注:无
void DelayMS(unsigned int ms)
{
  unsigned char i;
  while(ms != 0)
  {

    for(i=0;i
<
回复

使用道具 举报

0

主题

15

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-5-29 12:14:17 | 显示全部楼层

RE:【ST公益分享】 STM8 - PWM

还不错,STM8就是没有这么的详细讲解!
回复 支持 反对

使用道具 举报

1

主题

12

回帖

0

蝴蝶豆

新手上路

最后登录
2019-5-28
发表于 2011-8-5 11:27:48 | 显示全部楼层

RE:【ST公益分享】 STM8 - PWM

而且例程都太简单了,文档说的也很简略,出点问题都不知道看那个文档
回复 支持 反对

使用道具 举报

0

主题

70

回帖

0

蝴蝶豆

初级会员

最后登录
2020-9-25
发表于 2014-5-4 15:26:16 | 显示全部楼层

RE:【ST公益分享】 STM8 - PWM


LED 驱动,实现!
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版