標(biāo)題: STM32PWM輸出實驗源碼與解釋 [打印本頁]

作者: STZ    時間: 2020-3-18 16:04
標(biāo)題: STM32PWM輸出實驗源碼與解釋
什么是PWM?   

           脈沖寬度調(diào)制(Pulse Width Modulation,PWM)簡稱脈寬調(diào)制

        是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù)

        簡而言之,PWM是一種對模擬信號電平進行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。
//TIM14 PWM部分初始化
//PWM輸出初始化
//arr:自動重裝值
//psc:時鐘預(yù)分頻數(shù)
void TIM14_PWM_Init(u32 arr,u32 psc)
{                                                         
        //此部分需手動修改IO口設(shè)置
        RCC->APB1ENR|=1<<8;         //TIM14時鐘使能   
        RCC->AHB1ENR|=1<<5;           //使能PORTF時鐘        
        GPIO_Set(GPIOF,PIN9,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//復(fù)用功能,上拉輸出
        GPIO_AF_Set(GPIOF,9,9);        //PF9,AF9
        
        TIM14->ARR=arr;                        //設(shè)定計數(shù)器自動重裝值
        TIM14->PSC=psc;                        //預(yù)分頻器不分頻
        TIM14->CCMR1|=6<<4;          //CH1 PWM1模式                 
        TIM14->CCMR1|=1<<3;         //CH1 預(yù)裝載使能           
        TIM14->CCER|=1<<0;           //OC1 輸出使能        
        TIM14->CCER|=1<<1;           //OC1 低電平有效           
        TIM14->CR1|=1<<7;           //ARPE使能
        TIM14->CR1|=1<<0;            //使能定時器14                                                                                          
}  
  通過修改TIM14->CCR1的值可以修改PWM的占空比,可以使用宏定義,這樣使修改更加方便。

#define PWM_VAL TIM14->CCR1   
        主程序中:

TIM14_PWM_Init(100-1,8400-1); //10Khz的計數(shù)頻率,100HZ的PWM.

        如果設(shè)置PWM_VAL的值為50,就產(chǎn)生了占空比為50%為的PWM。


全部資料51hei下載地址:
PWM輸出實驗.rar (279.95 KB, 下載次數(shù): 74)






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1