通用定時器產生PWM

2021-06-23 01:07:55 字數 764 閱讀 1302

這裡給出乙個公式:

tout= ((arr+1)*(psc+1))/tclk;

其中:tclk:tim3 的輸入時鐘頻率(單位為 mhz)。注意這裡的單位,正常情況下由systeminit()函式配置掛載在apb1的通用定時器2-7皆為72mhz。

tout:tim3 溢位時間(單位為 us)。

根據上一節:定時器中斷 和本節中init初始化函式的引數arr和psc即可計算出定時器溢位時間。

通用定時器用於pwm輸出一共有ch1-ch4四個通道,每個通道對應固定的gpio口,可通過重對映功能修改對應的gpio口。

下例中使用tim4的ch2對應pb7口作為例程的pwm輸出。

配置步驟:

一、開啟rcc外設時鐘使能。tim4->apb1  gpio | afio->apb2

二、配置gpio口,因為小7開發板的問題這裡需要配置與led連線的io(pa8)為浮空輸入模式,然後用杜邦線與ch2-pwm口(pb7)連線.pb8配置為復用輸出。

三、配置定時器(決定週期)。

四、配置pwm相關(決定工作模式,可配置成輸入捕獲)。

五、使能相關。

下面給出**。

void pwm_init(u16 arr,u16 psc)

在主函式中執行函式:pwm_init(900-1,0);   //pwm頻率=8khz

tim_setcompare2(tim3,led0pwmval);  //用於改變占空比(0~899)之間

stm32 高階定時器產生PWM

用stm32的高階定時器tim1和tim8產生pwm,需要注意 1.都有tim1,但只有flash容量大於256k的大容量微控制器才有tim8 2.高階定時器相對於通用定時器,多了tim ctrlpwmoutputs tim8,enable tim1產生四路pwm程式 static void tim...

通用定時器

通用定時器tim3 tim3掛載在apb1 tim3時鐘使能 rcc apb1periphclockcmd rcc apb1periph tim3,enable 初始化定時器引數,設定自動重灌值,分頻係數,計數方式 定時器的初始化引數 void tim timebaseinit tim typede...

採用TIM1高階定時器產生PWM

stm32 的定時器功能十分強大,有 time1 和 time8 等高階定時器,也有 time2 time5 等通用定時器,還有 time6 和 time7 等基本定時器。而每種定時器的使用方法略有不同,之前寫產生pwm的程式使用的都是通用定時器,今天使用高階定時器tim1時發現怎麼也產生不了,後來...