應廣微控制器開發案例應廣微控制器11bitPWM配置

深圳市泛海微電子公司部落格發表於2020-12-15

  應廣微控制器有兩種硬體pwm,一種是8bit,另外一種是11bit,8bit的配置稍微簡單一些.現在以pms133/psm134為例子,貼一個11bit pwm配置的例子.修改一下可以應用於應廣其他系列的微控制器中.要注意的是pms152的11bit pwm無法模擬,配置也稍微有點不同.在使用的時候要注意一下.再強調一遍,pms152的 11bit pwm 無法用模擬器模擬.只能通過燒片測試.

計算公式如下:

配置

/*11bit pwm輸出OK*/
void PwmG0Init(void)
{
    word usTmr;
    usTmr=800;    
    /*上限低3位*/
    pwmg0cubl=(usTmr<<5);
    /*上限高8位*/
    pwmg0cubh=(usTmr>>3);

    usTmr=300;
    /*佔空比低3位*/
    pwmg0dtl=usTmr<<5;
    /*佔空比高8位*/
    pwmg0dth=usTmr>>3;

    
     /*b7@0=計數值為0產生中斷
       b6:5@01=預分頻為4
       4:0@1-32分頻*/
    pwmg0s=0b1_10_10011;

    
   /*b7@1=啟用pwm
     b6@預設,生成器輸出狀態
     b5@0=輸出極性不反轉
     b4@1=g2計數值清零
     
     b3:b1@001=PB5;011=PA0;100=PB4
     
     b0@1=(IHRC*2)*/
     pwmg0c=0b1_0_0_1_100_0;
 
}

/*設定佔空比*/

void SetRightPwmDt(void)
{

   /*重新開啟,可能出現關閉pwm的狀況,因此設定佔空比的的時候重新開啟*/

    pwmg0c=0b1_0_0_1_100_0;
    /*佔空比低3位*/
    pwmg0dtl=usPwmCnt<<5;
    /*佔空比高8位*/
    pwmg0dth=usPwmCnt>>3;


}

        注意:8bit的pwm在使用的時候,即使設定佔空比為0,仍有零星的波形輸出.為了安全起見,11bit的pwm還是採用關閉pwm輸出的策略去設定佔空比為0 

/*關閉*/

void ClosePwm(void)

{

  pwmg0c=0b1_0_0_1_000_0;

/*對應的埠設定成0*/

}

相關文章