ZHCACB7 March 2023 MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G3105 , MSPM0G3106 , MSPM0G3107 , MSPM0G3505 , MSPM0G3506 , MSPM0G3507 , MSPM0L1105 , MSPM0L1106 , MSPM0L1303 , MSPM0L1304 , MSPM0L1305 , MSPM0L1306 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346
说明
PWM 占空比与 LED 的亮度直接相关。在应用中使用 LED 作为指示灯或光源时,可以使用 PWM 信号来驱动 LED 亮度和功耗。MPSM0 中的计时器模块可用于生成具有不同频率和占空比的 PWM 信号。该示例代码以心跳方式调暗和调亮 LED,以显示可用于驱动 LED 的整个 PWM 占空比范围。
图 1 显示了该示例中使用的外设的功能方框图。
所需外设
该应用需要一个计时器、一个器件引脚和一个板载 LED。
子块功能 | 外设使用 | 说明 |
---|---|---|
PWM 生成 |
(1 个)计时器 G |
在代码中称为 PWM_0_INST |
IOMUX 子块 |
1 引脚 |
(1 个)PWM 输出 |
兼容器件
根据表 1 中的要求,该示例与表 2 中的器件兼容。相应的 EVM 可用于原型设计。
兼容器件 | EVM |
---|---|
MSPM0Lxxx |
|
MSPM0Gxxx |
设计步骤
设计注意事项
软件流程图
图 2 显示了应用程序为更改 PWM 输出的占空比而执行的操作。
应用代码
在应用程序代码中,PWM 占空比在计时器每次触发中断时增加 1%,直到达到 90%,然后降低 1%,直到占空比达到 10%,从而产生心跳效果。该应用 PWM 输出分辨率为 2000 位;因此,将 pwm_count 变量增加或减少 20 会使占空比改变 1%。根据应用要求,可能需要不同的调节。
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;
}
}
结果
附加资源