TIM高階定時器(2)輸出比較(互補輸出)

2021-10-21 06:34:40 字數 2012 閱讀 6275

輸出比較:用以輸出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 而根據容量的大小,又稍有區別。...