[分享] 【MSPM0L1306 LaunchPad】8、pwm呼吸灯

dql2016   2023-11-5 21:58 楼主

呼吸灯是很多产品常见的设计,尤其是低端产品没有液晶显示屏通过LED来显示工作状态。

使用CCS配置PWM输出十分简单,首先选择例程:

屏幕截图 2023-11-05 214014.png

 

 

看看demo说明

屏幕截图 2023-11-05 214611.png

 

 


PWM的配置,主要是定时器时钟和分频系数、装载值的设置:

屏幕截图 2023-11-05 215321.png

 

输出管脚连接了LED:

 

屏幕截图 2023-11-05 215335.png

程序,十分简洁易懂:


#include "ti_msp_dl_config.h"

int pwm_count = 1800; // initial ccr count based on 10% duty cycle
int dc = 10;          // initialized to 10 % duty cycle
int mode = 1; // 1 = up (will indicate you need to increase dc), 0 = down (will
              // decrease dc)

int main(void) {
  SYSCFG_DL_init();

  NVIC_EnableIRQ(PWM_0_INST_INT_IRQN);
  DL_TimerG_startCounter(PWM_0_INST);

  while (1) {
    __WFI();
  }
}

void PWM_0_INST_IRQHandler(void) {
  switch (DL_TimerG_getPendingInterrupt(PWM_0_INST)) {
  case DL_TIMER_IIDX_LOAD:
    if (dc <= 10) {
      mode = 1;
    } // if reached lowest dc (10%), increase dc
    else if (dc >= 90) {
      mode = 0;
    } // if reached highest dc (90%), decrease dc
    if (mode) {
      pwm_count -= 20;
      dc += 1;
    } // up
    if (!mode) {
      pwm_count += 20;
      dc -= 1;
    } // down
    DL_TimerG_setCaptureCompareValue(PWM_0_INST, pwm_count,
                                     DL_TIMER_CC_1_INDEX); // update ccr1 value
    break;
  default:
    break;
  }
}

效果:

GIF.gif 点击上图查看Gif动图

 

本帖最后由 dql2016 于 2023-11-5 22:02 编辑

回复评论 (2)

pwm呼吸灯是比测项目,完成的不错嘛

点赞  2023-11-6 07:27

PWM可以不用开启中断,毕竟PWM的频率一般都是比较高的  

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2023-11-6 10:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复