什么是PWM?
脈沖寬度調制(Pulse Width Modulation,PWM)簡稱脈寬調制
是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術
簡而言之,PWM是一種對模擬信號電平進行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。
//TIM14 PWM部分初始化
//PWM輸出初始化
//arr:自動重裝值
//psc:時鐘預分頻數(shù)
void TIM14_PWM_Init(u32 arr,u32 psc)
{
//此部分需手動修改IO口設置
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);//復用功能,上拉輸出
GPIO_AF_Set(GPIOF,9,9); //PF9,AF9
TIM14->ARR=arr; //設定計數(shù)器自動重裝值
TIM14->PSC=psc; //預分頻器不分頻
TIM14->CCMR1|=6<<4; //CH1 PWM1模式
TIM14->CCMR1|=1<<3; //CH1 預裝載使能
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.
如果設置PWM_VAL的值為50,就產生了占空比為50%為的PWM。
全部資料51hei下載地址:
PWM輸出實驗.rar
(279.95 KB, 下載次數(shù): 74)
2020-3-18 16:02 上傳
點擊文件名下載附件
基于stm32 下載積分: 黑幣 -5
|