PWM
PWM用于控制傳遞給負(fù)載的功率,而不改變傳遞給它的電壓或電流。它通過改變方波信號(hào)的占空比(導(dǎo)通時(shí)間與總時(shí)間的比)來工作娄柳。電力電子課程中會(huì)有所涉及。
使用STM32F4生成PWM波
STM32F4微控制器具有多個(gè)定時(shí)器可用于生成PWM波阳掐。本例使用TIM3在引腳PA6上生成PWM波。
第1步:初始化定時(shí)器
首先忧额,通過設(shè)置其分頻器和周期值來初始化定時(shí)器大咱。分頻器值確定計(jì)時(shí)器的頻率,而周期值確定PWM波的頻率刨仑。
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // 使能TIM3時(shí)鐘
TIM3->PSC = 839; // 設(shè)置分頻器值
TIM3->ARR = 999; // 設(shè)置周期值
這里祈搜,使用TIM3是一個(gè)16位定時(shí)器捧杉,并且有四個(gè)通道,可以用于生成四個(gè)獨(dú)立的PWM波形旬薯。分頻器值設(shè)置為839,此時(shí)的計(jì)時(shí)器頻率為刊咳。周期值設(shè)置為999,則輸出的PWM頻率為。
第2步:配置PWM波
接下來元潘,我們需要通過設(shè)置占空比和PWM模式來配置PWM波洛姑。占空比是通過改變捕獲/比較寄存器(CCR)的值來設(shè)置的择同。 PWM模式是通過配置輸出比較模式(OCMode)和脈沖寬度(PWM占空比)來設(shè)置的阻星。
TIM3->CCR1 = 499; // 設(shè)置占空比值
TIM3->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2; // 設(shè)置PWM模式
TIM3->CCER |= TIM_CCER_CC1E; // 啟用PWM輸出
此處將占空比設(shè)置為50%((499+1)/(999+1))宇葱,即輸出在一半時(shí)間內(nèi)高電平污尉,在另一半時(shí)間內(nèi)低電平蔼囊。
使用PWM模式1(TIM_CCMR1_OC1M_1
)和PWM模式2(TIM_CCMR1_OC1M_2
),二者共同作用時(shí)普碎,生成的PWM值低脈沖寬度等于CCR值和ARR值之差。通過在CCER寄存器中設(shè)置CC1E位來啟用PWM輸出表箭。
第3步:?jiǎn)?dòng)定時(shí)器
最后拆魏,通過啟用其計(jì)數(shù)器來啟動(dòng)計(jì)時(shí)器。
TIM3->CR1 |= TIM_CR1_CEN; // 啟用定時(shí)器計(jì)數(shù)器
即通過在CR1寄存器中設(shè)置CEN位來啟用計(jì)時(shí)器計(jì)數(shù)器。