mbed學習之 PWMOUT


        PWM通過一個周期內不同占空比來表征模擬量,應用非常廣泛。mbed中提供了一個PWM類,來對PWM進行操作,可以分別設置占空比,周期,以及脈沖寬度。
        因為這里是使用單片機內部TIM來生成PWM波的,所以並不是所有的IO都支持PWM輸出,具體哪些Pin腳支持,需要自己查datasheet,首先第一步,先創建 PWM對象:
PwmOut    mypwm(PB_0);            // PB0 pin輸出PWM波

 

        接下來可以設置PWM的占空比
        mypwm.write(0.1);                        // 0-->1之間,表示從0%-100%的占空比。
        這個時候就已經會有波形輸出了,默認PWM波的頻率50Hz,周期20ms
        另外,我們還可以通過下面三個函數設置PWM的周期,設置單位分別為s,ms,us。最大值受限於硬件平台,在stm32上最大是65536us,即0.065536s
        period()
        period_ms()
        period_us()
        通過下面三個函數可以設置PWM波的脈沖寬度,設置單位同樣為s,ms,us。同樣受限於硬件平台,stm32上最大為65535
        pulsewidth()
        pulsewidth_ms()
        pulsewidth_us()
        想知道當前輸出占空比,可以通過read()來讀取。
        同樣的,mbed都提供了操作符重載,我們可以通過 mypwm = 0.2 來代替write。 也可以通過類似 i = mypwm 。來獲取當前pwm值

        頻率固定,占空比可調
         PwmOut    mypwm(PB_0);            // PB0 pin輸出PWM波
        
         mypwm.period_us(10);                 //設定頻率
         mypwm = 0.1                                //占空比


脈寬1us,頻率100khz,占空比10%

脈寬3us,頻率100khz,占空比30%

         脈寬固定,占空比,頻率改變
         PwmOut    mypwm(PB_0);            // PB0 pin輸出PWM波
        
         mypwm.pulsewidth_us()(10);       //設定脈沖寬度
         mypwm.period_us(100);                //設定頻率,占空比 = 10/100

脈寬10us,周期100us,頻率10khz,占空比 10%

脈寬10us,周期50us,頻率20khz,占空比 20%
        

    PWM通過一個周期內不同占空比來表征模擬量,應用非常廣泛。mbed中提供了一個PWM類,來對PWM進行操作,可以分別設置占空比,周期,以及脈沖寬度。

   因為這里是使用單片機內部TIM來生成PWM波的,所以並不是所有的IO都支持PWM輸出,具體哪些Pin腳支持,需要自己查datasheet,首先第一步,先創建 PWM對象:

    PwmOut    mypwm(PB_0);     // PB0 pin輸出PWM波

    接下來可以設置PWM的占空比

    mypwm.write(0.1);     // 0-->1之間,表示從0%-100%的占空比。

    這個時候就已經會有波形輸出了,默認PWM波的頻率50Hz,周期20ms

    另外,我們還可以通過下面三個函數設置PWM的周期,設置單位分別為s,ms,us。最大值受限於硬件平台,在stm32上最大是65536us,即0.065536s

period()

period_ms()

period_us()

        通過下面三個函數可以設置PWM波的脈沖寬度,設置單位同樣為s,ms,us。同樣受限於硬件平台,stm32上最大為65535

pulsewidth()

pulsewidth_ms()

pulsewidth_us()

    想知道當前輸出占空比,可以通過read()來讀取。

    同樣的,mbed都提供了操作符重載,我們可以通過 mypwm = 0.2 來代替write。 也可以通過類似 i = mypwm 。來獲取當前pwm值

    頻率固定,占空比可調

PwmOut    mypwm(PB_0);     // PB0 pin輸出PWM波

mypwm.period_us(10);      //設定頻率

mypwm = 0.1     //占空比

 

c2068237-477e-459b-b76f-e9ab3fab518f

脈寬1us,頻率100khz,占空比10%

5bbd02f1-b2a6-4e5a-92d8-2ecc522b1a94

脈寬3us,頻率100khz,占空比30%

脈寬固定,占空比,頻率改變

PwmOut    mypwm(PB_0);     // PB0 pin輸出PWM波
mypwm.pulsewidth_us()(10);  //設定脈沖寬度
mypwm.period_us(100);     //設定頻率,占空比 = 10/100

 

827c7a20-1fdd-4389-a302-d664482cc9bb

脈寬10us,周期100us,頻率10khz,占空比 10%

cc8ed378-a2ef-4715-829a-7427aff92553

脈寬10us,周期50us,頻率20khz,占空比 20%


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM