色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應用 > SAM4E單片機之旅——5、LED呼吸和PWM

          SAM4E單片機之旅——5、LED呼吸和PWM

          作者: 時間:2017-01-24 來源:網(wǎng)絡(luò) 收藏

            在高頻情況下,一個很好的用處就是通過控制占空比來控制輸出的功率,比如控制風扇轉(zhuǎn)速、LED燈的亮度等。這次就利用的中斷功能,動態(tài)改變脈沖的占空比,來實現(xiàn)呼吸燈的效果。

          本文引用地址:http://cafeforensic.com/article/201701/343312.htm

            一、實現(xiàn)思路

            可以選擇讓計數(shù)器在周期結(jié)束產(chǎn)生中斷(在周期中央對齊時,可能選擇在周期中央也產(chǎn)生中斷),并且可以在運行的時候動態(tài)地調(diào)整占空比、周期、極性等屬性。所以可以在中斷處理函數(shù)中動態(tài)地改變占空比以改變LED燈的亮度。

            這次也將使用通道0和引腳PA0。

            二、PWM設(shè)置

            這里需要用到較高頻率的時鐘,所以選擇使用主時鐘經(jīng)32分頻后的時鐘(12.5 kHz)。計數(shù)器周期為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中斷處理

            在每個周期結(jié)束后,會產(chǎn)生一個中斷。然后在中斷處理函數(shù)中,改變占空比。需要注意的是,在PWM使能時,需要通過寫入PWM占空比修改寄存器(PWM_CDTYUPD)來改變占空比。默認情況下,該修改在下一個周期生效。

            為得到更好的效果,可以在兩次呼吸之間設(shè)置一斷間隔。

            注意,需要通過讀取PWM_ISR1來拉低產(chǎn)生的中斷。中斷處理函數(shù)在后面的完整代碼中貼出。



          關(guān)鍵詞: SAM4E PWM

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉