找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3188|回复: 0
收起左侧

STM8学习笔记—PWM模块

[复制链接]
ID:105323 发表于 2016-2-12 20:06 | 显示全部楼层 |阅读模式
首先将管脚配置为推挽输出。下面以向上计数模式为例来讲述PWM产生的原理:TIMx开始向上计数,TIMx_CNT为计数值,计数一次加1,TIMx_ARR确定了计数的上限,达到上限后计数器从0开始重新计数,所以一次PWM频率就由TIMx_ARR来确定了,即计数器时钟*(TIMx_ARR-1),频率确定了,接下来就是占空比。占空比是由TIMx_CCRx来确定的,PWM模式1下当TIMx_CNT<TIMx_CCRx,输出OCiREF有效电平,TIMx_CNT>=TIMx_CCRx时,输出OCiREF无效电平,至于有效电平是0还是1,要设置TIMx_CCERx,这样产生了一个PWM波形,可以说配置非常灵活,当TIMx_CCRx为0时,占空比就为0,当TIMx_CCRx大于TIMx_ARR时,就一直输出高电平(占空比100%)。下图是个例子:
以下是我写的一个参考程序,测试通过
void TIM1_Init(void)
{//定时器1初始化
CLK_PCKENR1|=0x80;//开启定时器1外设时钟
  TIM1_EGR=0x01;//重新初始化TIM1
  TIM1_EGR|=0x20;//重新初始化TIM1
  TIM1_ARRH=0x00;//设定重装载值
  TIM1_ARRL=254;
  TIM1_PSCRH=0;//预分频
  TIM1_PSCRL=9;
  TIM1_CR1=0;//边沿对齐,向上计数
}
void TIM1_PWM_Init()
{
  //TIM1_CCER1=0x03;//低电平有效
  //TIM1_CCMR1=0x70;//PWM模式2
  TIM1_CCER1=0x01;//高电平有效
  TIM1_CCMR1=0x60;//PWM模式1
  TIM1_CCR1H=0;//占空比
  TIM1_CCR1L=50;
  TIM1_CR1|=0x01;//向上计数,无缓存,使能
  TIM1_BKR=0x80;//开启刹车
}

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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