|
|
什么是PWM?
脈沖寬度調(diào)制(Pulse Width Modulation,PWM)簡(jiǎn)稱(chēng)脈寬調(diào)制
是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)
簡(jiǎn)而言之,PWM是一種對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法。通過(guò)高分辨率計(jì)數(shù)器的使用,方波的占空比被調(diào)制用來(lái)對(duì)一個(gè)具體模擬信號(hào)的電平進(jìn)行編碼。PWM信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任何時(shí)刻,滿(mǎn)幅值的直流供電要么完全有(ON),要么完全無(wú)(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負(fù)載上去的。通的時(shí)候即是直流供電被加到負(fù)載上的時(shí)候,斷的時(shí)候即是供電被斷開(kāi)的時(shí)候。只要帶寬足夠,任何模擬值都可以使用PWM進(jìn)行編碼。
//TIM14 PWM部分初始化
//PWM輸出初始化
//arr:自動(dòng)重裝值
//psc:時(shí)鐘預(yù)分頻數(shù)
void TIM14_PWM_Init(u32 arr,u32 psc)
{
//此部分需手動(dòng)修改IO口設(shè)置
RCC->APB1ENR|=1<<8; //TIM14時(shí)鐘使能
RCC->AHB1ENR|=1<<5; //使能PORTF時(shí)鐘
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è)定計(jì)數(shù)器自動(dòng)重裝值
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; //使能定時(shí)器14
}
通過(guò)修改TIM14->CCR1的值可以修改PWM的占空比,可以使用宏定義,這樣使修改更加方便。
#define PWM_VAL TIM14->CCR1
主程序中:
TIM14_PWM_Init(100-1,8400-1); //10Khz的計(jì)數(shù)頻率,100HZ的PWM.
如果設(shè)置PWM_VAL的值為50,就產(chǎn)生了占空比為50%為的PWM。
全部資料51hei下載地址:
PWM輸出實(shí)驗(yàn).rar
(279.95 KB, 下載次數(shù): 74)
2020-3-18 16:02 上傳
點(diǎn)擊文件名下載附件
基于stm32
|
評(píng)分
-
查看全部評(píng)分
|