<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        Rainbow通過PWM輸出控制LED亮度

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年05月06日   【字體:

            PWM廣泛用于電機調速、LED控制器調光等領域,有些開源硬件(如:Arduino)將這種輸出稱之為“模擬輸出”。Rainbow使用的MCU包含四個通用定時器,每個定時器可以支持四個通道的PWM輸出,所以理論上我們可以使用的PWM輸出管腳有16個。Rainbow的軟件設計中使用36M時鐘作為定時器的計數時鐘,使用12bit的計數,因此占空比可以在0-100%之間有4096個不同的PWM輸出等級,對應的PWM波的頻率大約為9K左右。

         
            在Rainbow中進行PWM輸出非常簡單,只需要按照下列步驟即可:
            1、設置對應管腳的輸出模式為:GPIO_Mode_Out_PP,例如:我們使用PA0輸出PWM,pinMode(PA0, GPIO_Mode_Out_PP);
            2、調用pwmWrite()在指定管腳輸出PWM,如:pwmWrite(PA0, 100),表示在PA0口輸出的PWM占空比為:100/4096 * 100%
         
            在軟件包的“Projects\PWM”文件夾包含了本文的完整工程,可以直接編譯、燒寫和調試。來看看main.cpp的代碼:
        #include "WProgram.h"
         
        void setup()
        {
          //初始化開發板
          boardInit();
          //設置LED的輸出模式
          pinMode(LED1_PIN, GPIO_Mode_Out_PP);
        }
         
        void loop()
        {
          //先讓LED從暗變亮
          for(int16_t i=0; i<0x0FFF; i+=100)
          {
            pwmWrite(LED1_PIN, i);
            //延時100ms
            delay(100);
          }
         
          //再讓LED從亮變暗
          for(int16_t i=0x0FFF; i>0; i-=100)
          {
            pwmWrite(LED1_PIN, i);
            //延時100ms
            delay(100);
          }
        }
         
        int main(void)
        {
          setup();
          while(1) loop();
        }
            程序非常簡單,在setup()函數中設置了PWM輸出管腳的模式為GPIO_Mode_Out_PP,然后通過一個循環使得LED由暗變亮,然后再由亮變暗,周而復始進行。
         
            上面的程序編譯無誤后,將程序燒寫到Rainbow中,我們可以看到板載的LED亮度由暗變亮,然后再由亮變暗。
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮