關於定時器( PWM波)

2021-09-12 06:35:16 字數 1953 閱讀 1265

學習使我強壯!!!

準備學習pwm,然後,,,發現自己貌似並不是很懂定時(計數)器這個東東,emmm,木得關係,再學習一下!!!

明確:

1. 時鐘週期 = 1/11059200,1個機器週期 = 12個時鐘週期;

2. 關於定時功能的實現:定時器內部有乙個暫存器,開始計數後,每隔乙個機器週期(12/11059200秒)自動加一,當加到上限(比如16位的定時器,最大值是65535),那麼加到65535後再加1(65536)就會溢位,然後自動清0,定時就是利用這個特點,我們設定乙個初始值,讓定時器從這個初始值開始加1,加到65536清0,實現1次計時,那麼定時值 = (65536 - 初始值),一句話,從某乙個初值開始,經過確定的時間後溢位,這就是定時

3. 定時器分為:定時器0定時器1

4. 注意圖中紅色線框部分:(以定時器0為例)當寫tr0 = 1後,定時器就會每隔1個機器週期自動加1

5. 兩個工作模式(模式1模式2):

模式1:計數範圍是 0~65535,溢位後,只要不對 thn 和 tln 重新賦值,則從 0 開始計數

模式2:只有 tln做加 1 計數,計數範圍 0~255,thn的值並不發生變化,而是保持原值tln 溢位後,tfn就直接置 1 了,並且thn 原先的值直接賦給 tln,然後tln 從新賦值的這個數字開始計數(用來產生串列埠的通訊波特率

6. 關於tmod: 低四位是定時器0,高四位是定時器1,要控制定時器0,我們就需要讓低四位置1定時器1,讓高四位置1

7. 讓我們來看一下計數初值是怎麼計算的呢?加入說我們要定時2ms,也就是0.002秒,設需要計時x個機器週期,那麼x * (12/11059200) = 0.002,那麼x = 0.002 *(11059200 / 12),而這個x就是我們程式中的tmp了,這個tmp是我們需要計時的個數,那我們的初值怎麼計算呢?很簡單,只要用65536-tmp就好了呀,來看一下**:

void configtimer0(u8 ms)

總之就記住一句話!!!計時個數(tmp) = (11059200/12) * 定時時間明白了上面那些,我們再來看一下pwm波(調占空比)的程式叭~

/*pwm是指高電平佔的百分比*/

void configtimer1(u32 fr, u8 dc)//fr代表頻率(時間= 1/fr),dc表示高電平所佔的份額

定時器PWM波輸出頻率問題

平台 stm32 功能 多個定時器輸出多路pwm波。現象 相同arr及ccr,輸出pwm波頻率不同。詳細 這類問題通常涉及到定時器時鐘源的問題,stm32f4的tim1與其他定時器不同,不在同一條匯流排上,所以要注意匯流排頻率的問題。1,例如如果定時器1的輸出頻率是其他定時器的兩倍,那麼主要檢查設定...

通用定時器產生PWM

這裡給出乙個公式 tout arr 1 psc 1 tclk 其中 tclk tim3 的輸入時鐘頻率 單位為 mhz 注意這裡的單位,正常情況下由systeminit 函式配置掛載在apb1的通用定時器2 7皆為72mhz。tout tim3 溢位時間 單位為 us 根據上一節 定時器中斷 和本節...

PWM定時器及其蜂鳴器

arm體系結構 pwm定時器及其蜂鳴器 1 一般soc中產生pwm訊號都是靠定時器模組產生的。也就是說soc有個定時器專門生產pwm訊號的。2 pwm pulse wide modulation 脈寬調變 也就是這是一種訊號,這個訊號有特定的波形。3 pwm波形是乙個週期性波形,週期為t,在每個週期...