• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

    作者: 時間:2017-01-24 來源:網絡 收藏

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

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

      一、實現思路

      可以選擇讓計數器在周期結束產生中斷(在周期中央對齊時,可能選擇在周期中央也產生中斷),并且可以在運行的時候動態地調整占空比、周期、極性等屬性。所以可以在中斷處理函數中動態地改變占空比以改變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來拉低產生的中斷。中斷處理函數在后面的完整代碼中貼出。



    關鍵詞: SAM4E PWM

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 扎囊县| 冕宁县| 泰和县| 论坛| 五台县| 突泉县| 双牌县| 象山县| 浠水县| 汝城县| 渭南市| 疏勒县| 四平市| 靖州| 云霄县| 汾阳市| 汉中市| 抚松县| 白水县| 乌鲁木齐县| 汝阳县| 志丹县| 北票市| 施秉县| 昌都县| 保定市| 四子王旗| 监利县| 无为县| 东城区| 德州市| 济宁市| 汽车| 新兴县| 汉沽区| 洪雅县| 浑源县| 玛纳斯县| 河东区| 称多县| 兴隆县|