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

关于STM8S105的互补PWM输出

[复制链接]
qinlu123 提问时间:2017-12-18 17:23 /
STM8S的TIM1的前三个通道可以输出互补的PWM,在测试中发现了一个奇怪的问题。
当PWM频率设置的比较小时(1K或者2K,我就测了几个频率)互补输出正常。当我改变分频系数(TIM1_PSCRH和TIM1_PSCRL两个寄存器)或者修改ARR寄存器来提高到一定频率时(比如提高到4K),CHxN直接恒输出高,CHx输出占空比50%的PWM(即使CCRx/ARR*100%不等于50%)。
配置代码:
  CLK_PCKENR1 |= 0x80;//开启定时器1外设时钟

  TIM1_EGR |= 0x01;   //重新初始化TIM1

  TIM1_CR1 = 0x00;    //B7(0)可以直接写入 B65(00)边缘对齐模式B4(0)向上计数B3(0)计数器不停止发生更新事件

  TIM1_RCR = 0x00;  

  TIM1_PSCRH =0;      //设定预分频为,16分频 1M
  TIM1_PSCRL =0x0f;   //PWM的时钟 影响周期

  TIM1_CCER1 = 0x55;  //PWM1/PWM1N互补输出,PWM2/PWM2N互补输出,高电平有效
  TIM1_CCER2 = 0x11;  //PWM3/PWM4输出,高电平有效

  TIM1_CCMR1 = 0x60;  //PWM模式1,CC1配置输出
  TIM1_CCMR2 = 0x60;  //PWM模式1,CC2配置输出
  TIM1_CCMR3 = 0x60;  //PWM模式1,CC3配置输出
  TIM1_CCMR4 = 0x60;  //PWM模式1,CC4配置输出

  TIM1_ARRH = 1000/256;   
  TIM1_ARRL = 1000%256;   //PWM的周期

  TIM1_CCR1H = 800/256;
  TIM1_CCR1L = 800%256;  // 占空比值
  TIM1_CCR2H = 800/256;
  TIM1_CCR2L = 800%256;  // 占空比值
  TIM1_CCR3H = 800/256;
  TIM1_CCR3L = 800%256;  // 占空比值
  TIM1_CCR4H = 800/256;
  TIM1_CCR4L = 800%256;  // 占空比值

  TIM1_CR1 |= 0x01;   //使能TIM1计数器

  TIM1_BKR |= 0x80;   //主输出使能

  TIM1_DTR = 0xff;    //插入死区

不知道大家有没有遇到过类似的问题。
收藏 评论0 发布时间:2017-12-18 17:23

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版