通過設定該暫存器(ccrx)來調整pwm輸出的占空比,如下圖所示:
以通道1為例說明pwm的工作過程:
首先通過設定ccr1(捕獲比較(值)暫存器)設定設定比較值。
然後通過設定ccmr1: oc1m[2:0]位以及ccer:cc1p位(輸入/捕獲1輸出極性)來設定高低電平的輸出模式,具體如圖所示
最後設定ccer:cc1e位,使能輸入/捕獲1輸出。
rcc_apb1periphclockcmd(rcc_apb1periph_tim3, enable); //使能定時器3時鐘
rcc_apb2periphclockcmd(rcc_apb2periph_gpiob | rcc_apb2periph_afio, enable); //使能gpio外設和afio復用功能模組時鐘
(2)為了顯示實驗效果,將tim3的輸出通道部分對映至pb5
gpio_pinremapconfig(gpio_partialremap_tim3, enable); //timer3部分重對映 tim3_ch2->pb5
(3)初始化gpio埠
gpio_inittypedef gpio_initstructure;
gpio_initstructure.gpio_pin = gpio_pin_5; //tim_ch2
gpio_initstructure.gpio_mode = gpio_mode_af_pp; //復用推挽輸出
gpio_initstructure.gpio_speed = gpio_speed_50mhz;
gpio_init(gpiob, &gpio_initstructure);//初始化gpio
(4)初始化tim3
tim_timebaseinittypedef tim_timebasestructure;
tim_timebasestructure.tim_period = arr; //設定在下乙個更新事件裝入活動的自動重裝載暫存器週期的值
tim_timebasestructure.tim_prescaler =psc; //設定用來作為timx時鐘頻率除數的預分頻值
tim_timebasestructure.tim_clockdivision = 0; //設定時鐘分割:tdts = tck_tim
tim_timebasestructure.tim_countermode = tim_countermode_up; //tim向上計數模式
tim_timebaseinit(tim3, &tim_timebasestructure); //根據tim_timebaseinitstruct中指定的引數初始化timx的時間基數單位
(5)初始化tim3 channel2
tim_ocinittypedef tim_ocinitstructure;
tim_ocinitstructure.tim_ocmode = tim_ocmode_pwm2; //選擇定時器模式:tim脈衝寬度調製模式2
tim_ocinitstructure.tim_outputstate = tim_outputstate_enable; //比較輸出使能
tim_ocinitstructure.tim_ocpolarity = tim_ocpolarity_high; //輸出極性:tim輸出比較極性高
tim_oc2init(tim3, &tim_ocinitstructure); //根據t指定的引數初始化外設tim3 oc2
(6)使能tim3在ccr2上的預裝載暫存器
tim_oc2preloadconfig(tim3, tim_ocpreload_enable);
(7) 使能tim3
tim_cmd(tim3, enable);
主函式
int main(void)
}
STM32輸出PWM波教程
pwm輸出配置步驟 舉例 使能定時器3和相關io口時鐘。使能定時器3時鐘 rcc apb1periphclockcmd 使能gpiob時鐘 rcc apb2periphclockcmd 初始化io口為復用功能輸出。函式 gpio init gpio initstructure.gpio mode g...
STM32 快速上手PWM輸出
在前面文章 stm32 一文搞懂通用定時器捕獲 比較通道 已經詳細介紹了輸入stm32的捕獲 比較通道,這邊文章來寫比較通道的pwm的應用。初始化io口為復用功能輸出 重對映相關引腳為pwm輸出 初始化定時器 主要是配置arr和psc 初始化通道x輸出比較引數 使能通道x預裝載暫存器 使能定時器 修...
STM32自學筆記(六)PWM輸出
stm32 的定時器除了 tim6 和 7。其他的定時器都可以用來產生 pwm 輸出。其中高階定 時器 tim1 和 tim8 可以同時產生多達 7 路的 pwm 輸出。而通用定時器也能同時產生多達 4 路的 pwm 輸出,這樣,stm32 最多可以同時產生 30 路 pwm 輸出。用到3個暫存器 ...