PWM輸出捕獲模式

2021-09-23 01:47:14 字數 1267 閱讀 8777

pwm輸入捕獲模式是輸入捕獲模式的特例,自己理解如下:

每個定時器有四個輸入捕獲通道ic1、ic2、ic3、ic4。且ic1 ic2一組,ic3 ic4一組。並且可是設定管腳和暫存器的對應關係。

同乙個tix輸入映**兩個icx訊號。

這兩個icx訊號分別在相反的極性邊沿有效。

兩個邊沿訊號中的乙個被選為觸發訊號,並且從模式控制器被設定成復位模式。

當觸發訊號來臨時,被設定成觸發輸入訊號的捕獲暫存器,捕獲「乙個pwm週期(即連續的兩個上公升沿或下降沿)」,它等於包含tim時鐘週期的個數(即捕獲暫存器中捕獲的為tim的計數個數n)。

同樣另乙個捕獲通道捕獲觸發訊號和下乙個相反極性的邊沿訊號的計數個數m,即(即高電平的週期或低電平的週期)

由此可以計算出pwm的時鐘週期和占空比了

frequency=f(tim時鐘頻率)/n。

duty cycle=(高電平計數個數/n),

若m為高電平計數個數,則duty cycle=m/n

若m為低電平計數個數,則duty cycle=(n-m)/n

注:因為計數器為16位,所以乙個週期最多計數65535個,所以測得的 最小頻率= tim時鐘頻率/65535。

二、程式設計與分析

程式概述:選擇tim3作為pwm輸入捕獲。ic2設定為上公升沿,並設定為有效的觸發輸入訊號。所以ic2的捕獲暫存器捕獲pwm週期,ic1的捕獲暫存器捕獲pwm的高電平週期。

之前除錯的時候,想檢測低頻,按照上面方法進行分頻處理時,怎麼都不行,後來才搞明白,由於檢測時要進行計數,印記預裝載值tim_period還是要設定成0xffff,而tim_prescaler是進行分頻用的,也就是說,如果定時器時鐘為72m,則將tim_prescaler設定成5後,tim的時鐘為14.4m,此時可以檢測的最小頻率=14.4m/0xffff,也就是說最小檢測頻率= 14.4m/tim_period。

#include

"stm32f10x.h"

//void

tim3_ch_config

(void

)

//中斷

__io uint16_t ic2value =0;

__io uint16_t dutycycle =0;

__io uint32_t frequency =0;

void

tim3_irqhandler

(void

)else

}}

STM32定時器輸出 捕獲PWM

硬體 德飛萊stm32f407 功能 tim4 ch1 pb6輸出pwm,tim3 ch1 pc6捕獲高電平時間 include timer.h void tim4 pwm init void void tim3 cap init void tim3 ch1定時器獲取 u8 tim3 irq sta...

PWM波形輸出

在學習嵌入式開發板例程時,剛開始的時候不懂pwm波形是怎樣輸出的,後來漸漸的消化了,mark下 stm32 clock init 9 系統時鐘設定 delay init 72 延時初始化 uart init 72,9600 串列埠初始化 led init 初始化與led連線的硬體介面 tim1 pw...

定時器pwm輸出模式小結

對於pwm輸出模式共有以下幾種模式 tim ocmode timing tim ocmode active tim ocmode inactive tim ocmode toggle tim ocmode pwm1 tim ocmode pwm2 首先是 看說明書中的解釋 tim ocmode 函式...