筆記 STM32F407 TIM輸出PWM

2021-10-05 15:46:17 字數 2209 閱讀 2478

//初始化定時器

void tim2_pwm_init(u16 arr, u16 psc)

{gpio_inittypedef gpio_initstructure;

tim_timebaseinittypedef tim_timebasestructure;

tim_ocinittypedef tim_ocinitstructure;

tim_deinit(tim2);	

rcc_apb1periphclockcmd(rcc_apb1periph_tim2, enable); //使能定時器時鐘

rcc_ahb1periphclockcmd(rcc_ahb1periph_gpioa, enable);//使能gpio的時鐘

//設定該引腳為復用輸出功能,輸出tim2 ch1的pwm脈衝波形

gpio_initstructure.gpio_pin = gpio_pin_15; //tim2_ch1對應

gpio_initstructure.gpio_mode = gpio_mode_af;

gpio_initstructure.gpio_otype = gpio_otype_pp;

gpio_initstructure.gpio_pupd = gpio_pupd_nopull;

gpio_initstructure.gpio_speed = gpio_fast_speed;

gpio_init(gpioa, &gpio_initstructure);//初始化gpio

gpio_pinafconfig(gpioa,gpio_pinsource15,gpio_af_tim2);

//初始化tim

tim_timebasestructure.tim_period = arr; //設定在下乙個更新事件裝入活動的自動重裝載暫存器週期的值

tim_timebasestructure.tim_prescaler =psc; //設定用來作為timx時鐘頻率除數的預分頻值

tim_timebasestructure.tim_clockdivision =tim_ckd_div1; //設定時鐘分割:tdts = tck_tim

tim_timebasestructure.tim_countermode = tim_countermode_up;

tim_timebasestructure.tim_repetitioncounter = 0;

tim_timebaseinit(tim2, &tim_timebasestructure); //根據tim_timebaseinitstruct中指定的引數初始化timx的時間基數單位

//初始化tim2 channel1 pwm模式	

tim_ocinitstructure.tim_ocmode = tim_ocmode_pwm2; //選擇定時器模式:tim脈衝寬度調製模式2

tim_ocinitstructure.tim_ocidlestate = tim_ocidlestate_set;

tim_ocinitstructure.tim_outputstate = tim_outputstate_enable; //比較輸出使能

tim_ocinitstructure.tim_ocnidlestate = tim_ocnidlestate_reset;

tim_ocinitstructure.tim_outputnstate = tim_outputnstate_disable;

tim_ocinitstructure.tim_ocpolarity = tim_ocpolarity_high; //輸出極性:tim輸出比較極性高

tim_ocinitstructure.tim_pulse = (arr+1)/2; //設定待裝入捕獲比較暫存器的脈衝值,高於脈衝值就會產生高電平

tim_oc1init(tim2, &tim_ocinitstructure); //根據t指定的引數初始化外設

tim_oc1preloadconfig(tim2, tim_ocpreload_enable); //使能tim1在ccr1上的預裝載暫存器

tim_cmd(tim2, disable);

//5khz pwm定時器

//定時器2時鐘84m,分頻係數84,所以84m/84=1000khz的計數頻率,計數1次為1us

tim2_pwm_init(1000/5-1, 84 - 1);

tim_cmd(tim2, enable);

基於stm32f407建立stm32F427工程

分為三個部分 1.啟動檔案 2.fwilib 包含兩個資料夾inc和src。src裡面是stm32資源的c檔案,inc則是32資源的h檔案 3.user這也是我不太理解的部分 ddbugconfig只包含了用於debug的初始化,則是f4的系統檔案。我是在f407的基礎上改的 總的來說 1.改了晶元...

STM32F407標準庫學習筆記 EXTI機制

如上圖所示,紅色為自引腳傳入的硬體電平訊號,綠色為暫存器傳來的軟體電平訊號 兩者皆為 能夠觸發 中斷 事件 的訊號,交匯於或門,兩者都可以單獨向後面發出訊號。即訊號 有軟 硬兩種。藍色線路 意為 將 或門傳出的訊號 視為中斷訊號,借助兩個 且門 和兩組對應的 遮蔽暫存器的 輸出訊號,實現藍色通路,黃...

STM32F407標準庫學習筆記 SYSTICK

systick定時器與核心緊密相連,請參考arm公司的手冊,他的中斷使能在自己的模組中,中斷優先順序和標誌位在scb中。typedef struct systick type 控制及狀態暫存器 計數標誌 時鐘源 異常 中斷 使能 計時器使能 開始 重裝載數值暫存器 倒計時起始值,24位有效,因為是減...