您的位置 首页 报告

SAM4E单片机之旅——5、LED呼吸和PWM

PWM在高频情况下,一个很好的用处就是通过控制占空比来控制输出的功率,比如控制风扇转速、LED灯的亮度等。这次就利用PWM的中断功能,动态改变脉冲的占空比,来实现呼吸灯的效果。一、实现思路

  PWM在高频情况下,一个很好的用途便是经过操控占空比来操控输出的功率,比方操控电扇转速、LED灯的亮度等。这次就运用PWM的中止功用,动态改动脉冲的占空比,来完成呼吸灯的作用。

  一、完成思路

  PWM能够挑选让计数器在周期完毕发生中止(在周期中心对齐时,或许挑选在周期中心也发生中止),而且能够在运转的时分动态地调整占空比、周期、极性等特点。所以能够在中止处理函数中动态地改动占空比以改动LED灯的亮度。

  这次也将运用通道0和引脚PA0。

  二、PWM设置

  这儿需求用到较高频率的时钟,所以挑选运用主时钟经32分频后的时钟(12.5 kHz)。计数器周期为400,即输出脉冲频率为125000/400 = 312.5 Hz。一起需求使能相应的中止。

  PWM的首要装备代码如下:

  #define PERIOD_VALUE 400

  /* 时钟挑选 */

  PWM->PWM_CH_NUM[0].PWM_CMR = PWM_CMR_CPRE_MCK_DIV_32;

  /* 启用中止 */

  PWM->PWM_IER1 = PWM_IER1_CHID0;

  /* 周期及占空比 */

  PWM->PWM_CH_NUM[0].PWM_CPRD= PWM_CPRD_CPRD(PERIOD_VALUE);

  PWM->PWM_CH_NUM[0].PWM_CDTY = PWM_CDTY_CDTY(0);

  /* 使能中止 */

  NVIC_ClearPendingIRQ(PWM_IRQn);

  NVIC_SetPriority(PWM_IRQn, 0);

  NVIC_EnableIRQ(PWM_IRQn);

  三、PWM中止处理

  在每个周期完毕后,会发生一个中止。然后在中止处理函数中,改动占空比。需求留意的是,在PWM使能时,需求经过写入PWM占空比修正寄存器(PWM_CDTYUPD)来改动占空比。默许情况下,该修正鄙人一个周期收效。

  为得到更好的作用,能够在两次呼吸之间设置一断距离。

  留意,需求经过读取PWM_ISR1来拉低发生的中止。中止处理函数在后面的完好代码中贴出。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/209053.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部