輸出比較:用以輸出pwm訊號或脈衝訊號
輸入捕獲和輸出比較的暫存器共用,具體看初始化時的配置
輸出比較有8種模式,其中,只有pwm輸出模式最常用。
pwm輸出就是對外輸出脈寬(即占空比)可調的方波訊號,訊號頻率由自動重灌暫存器arr的值決定,占空比由比較暫存器ccr的值決定。(ccr既是捕獲暫存器,也是比較暫存器,是哪乙個,看tim的初始化模式)
一般情況下使用pwm1模式,cnt遞增,並配置高電平有效
pwm1模式,預設低電平,滿足條件使得通道有效,跳變到高電平
pwm2模式,預設高電平,滿足條件使得通道有效,跳變到低電平
只有通道1~3帶互補輸出,通道4無互補輸出
帶死區時間和剎車控制
選用通道ch1,ch1n,bkin
pwm訊號的頻率為:
f=tim_clk/[(arr+1)(psc+1)]
pwm訊號的占空比為:
占空比=ccr/(arr+1)*100%
時基初始化結構體
typedef
struct
tim_timebaseinittypedef;
//時基初始化結構體
輸出比較結構體
typedef
struct
tim_ocinittypedef;
//輸出比較結構體初始化
剎車和死區時間結構體
typedef
struct
tim_bdtrinittypedef;
//剎車和死區結構體初始化
void
tim_oc1init
(tim_typedef* timx, tim_ocinittypedef* tim_ocinitstruct)
;//通道1 輸出比較結構體初始化
void
tim_oc1preloadconfig
(tim_typedef* timx, uint16_t tim_ocpreload)
;//通道1 是否允許自動重裝載
void
tim_ctrlpwmoutputs
(tim_typedef* timx, functionalstate newstate)
;//主輸出使能
void
tim_oc1polarityconfig
(tim_typedef* timx, uint16_t tim_ocpolarity)
;//設定通道1 輸出比較的極性(空閒狀態下的極性)
void
tim_oc1npolarityconfig
(tim_typedef* timx, uint16_t tim_ocnpolarity)
;//設定通道1 互補輸出的極性
tim.c
void
pwm_io_config
(void
)void
pwm_mode_config
(void
)void
pwm_init
(void
)
主函式只要寫上pwm_init()函式即可。
示波器應該連線相應引腳才行。
剎車功能檢測:bkin引腳連線電源正極(tim_breakpolarity_high)即可,看影象tim_ocidlestate_set、tim_ocidlestate_reset是否正確
高階定時器 PWM互補輸出
一 程式設計要點 1 初始化tmi相關gpio 2 初始化時基結構體 3 初始化比較輸出結構體 4 初始化死區剎車結構體 5 編寫呼吸燈函式 二 結構體 庫函式 1 時基結構體 typedef struct tim timebaseinittypedef 2 比較輸出結構體 typedef stru...
定時器比較輸出
通道對應的引腳模式要設定成 gpio initstructure.gpio mode gpio mode af pp 因為這個問題弄了三個小時 初始化tim3 設定為輸出比較模式 tim ocinitstructure.tim ocmode tim ocmode pwm2 1 tim ocinits...
TIM基本定時器 定時
定時 輸出比較 輸入捕獲 互補輸出 分類 基本定時器 定時 通用定時器 定時 輸出比較 輸入捕獲 高階定時器 定時 輸出比較 輸入捕獲 互補輸出 f103系列的開發板一般是倆個高階定時器tim1 tim8 4個通用定時器tim2 3 4 5 2個基本定時器tim6 7 而根據容量的大小,又稍有區別。...