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

来源:本站
导读:目前正在解读《SAM4E单片机之旅——5、LED呼吸和PWM》的相关信息,《SAM4E单片机之旅——5、LED呼吸和PWM》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《SAM4E单片机之旅——5、LED呼吸和PWM》的详细说明。
简介:利用PWM的中断功能,动态改变脉冲的占空比,来实现呼吸灯的效果。

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

一、实现思路

PWM可以选择让计数器在周期结束产生中断(在周期中央对齐时,可能选择在周期中央也产生中断),并且可以在运行的时候动态地调整占空比、周期、极性等属性。所以可以在中断处理函数中动态地改变占空比以改变LED灯的亮度。

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

二、PWM设置

这里需要用到较高频率的时钟,所以选择使用主时钟经32分频后的时钟(12.5kHz)。计数器周期为400,即输出脉冲频率为125000/400=312.5Hz。同时需要使能相应的中断。

PWM的主要配置代码如下:

#definePERIOD_VALUE400

/*时钟选择*/

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来拉低产生的中断。

提醒:《SAM4E单片机之旅——5、LED呼吸和PWM》最后刷新时间 2024-03-14 00:53:42,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《SAM4E单片机之旅——5、LED呼吸和PWM》该内容的真实性请自行鉴别。