簡述:使用tim2捕獲pwm
ide: keilv5.27
firmware package:stm32cube fw_h7 v1.8.0
晶元:stm32h750vbt6
開啟tim2輸入捕獲
配置psc為200-1,這裡主要是方便計算,計時器加一正好是1微妙。我配置的h750的主頻為400m,apb1時鐘為200m,並且我是用來測量50hz的矩形波。所以psc為200-1已經足夠。arr就取最大值即可。
通道一和二都配置成捕獲上公升沿。
管腳配置成上拉或者下拉。在無訊號輸入的時候,保持穩定的電平。
hal_tim_ic_start_it
(&htim2,tim_channel_1)
;hal_tim_ic_start_it
(&htim2,tim_channel_2)
;//開啟tim2兩通道的輸入捕獲
void
hal_tim_ic_capturecallback
(tim_handletypedef *htim)
if(htim->instance == tim4)
}void
tim2_capturechannel1_callback
(void
)}
#define __hal_tim_set_capturepolarity(__handle__, __channel__, __polarity__) \
dowhile(0)
這一句話__hal_tim_set_capturepolarity中就包含了清除原來通道的極性和設定型通道的極性。所以直接使用即可。
__hal_tim_getcounter(&htim2)
__hal_tim_getcompare(&htim2,tim_channel_1)
這兩句話 第一句是用來獲得計數器的值,乙個是用來獲得ccr1的值。ccr1是通道一的捕獲/比較暫存器。ccr1包含了由上一次輸入捕獲事件傳輸的計數器值。所以在此中斷裡兩句話的作用差不多。如果不在中斷內呼叫,獲得ccr1的值即可。由於我要在tim4的中斷中取獲得tim2的計數值,所以都使用了__hal_tim_getcounter。
實驗結果:50hz方波捕獲到的週期為20000us基本不變。
stm32h7記憶體分配 談談H7的記憶體分配以及總結
首先呢,大家在使用h743 的時候,在keil或者iar中,有乙個記憶體的勾選,如圖1,irom1表示flash的記憶體位址,h743是2m,所以,大小自然是2m,起始位址可以在參考手冊中找到,如圖2,這個比較容易理解,程式就是從這開始執行。其次,是ram,743內部有1m,那麼這1m怎麼分的呢,直...
STM32H7系列使用DMA不能傳輸資料的問題
我使用dma進行spi傳輸時發現無資料,還好有個邏輯分析儀,不然有沒有訊號都不知道 這是匯流排訪問許可權的圖。表示不能訪問。d 表示直接訪問。其它的都是間接訪問。發現dma1只有itcm和dtcm不能訪問,問題就出在這。有句 tcm 介面上的 dtcm ram 對映到位址 0x2000 0000,可...
stm32 輸入捕獲
根據定時器的計數頻率,我們就可以算出t1 t2的時間,從而得到高電平脈寬 計算公式 n arr ccrx2首先設定定時器通道為上公升沿捕獲,這樣在t1時刻,就會捕獲到當前的cnt值,然後立即清零cnt,並設定定時器通道為下降沿捕獲,這樣到t2時刻,又會發生捕獲事件,得到此時的cnt值,記為ccrx2...