6 輸入捕獲實驗

2021-06-27 15:13:19 字數 950 閱讀 4736

注意點:1、在學習的過程中我們使用到與串列埠實驗相類似的乙個暫存器(本質是乙個變數),用來處理不同的情況,在今後的學習也可以使用這種方法,這種暫存器的組成如下圖所示:

2、確定捕獲到乙個完整高電平的軟體實現(包括如果處理接收到的高電平持續時間過長的情況)

void tim2_irqhandler(void)

else tim2ch1_capture_sta++;}}

if (tim_getitstatus(tim2, tim_it_cc1) != reset)//捕獲 1 發生捕獲事件(可能是高電平,也有可能是低電平)

else                   //還未開始,第一次捕獲上公升沿

}                   

}tim_clearitpendingbit(tim2, tim_it_cc1|tim_it_update); //清除中斷標誌位}

是這樣的,當發生上公升沿捕獲的時候,由於這時候tim2ch1_capture_sta的標誌位還沒有被置為高位,所以進入到下乙個迴圈。同時設定下次捕獲為下降沿捕獲。到再次發生捕獲的時候,就可以用是否已經獲得上公升沿標誌位來判斷是否捕捉到下降沿。至此一次脈寬的採集就完成了。

3、主函式中高電平時間的計算:

int main(void)}}

通過分析計算公式可知:定時器2的工作頻率為72m/(71+1)=10m;由於其自動裝載的數值是0xffff(65535),計數方式為0~65535,那麼完成一次計數的時間就需要65536*(1/10m)。(一次脈衝計數器加1)那麼也就可以理解**中的計算方式了,tim2ch1_capture_sta為溢位的次數,tim2ch1_capture_val為暫存器中的計數值。每完成一次計數都是從0~65535,那麼因為溢位所以需要的時間為溢位次數*每次完成一次計數所需要的時間,即temp=tim2ch1_capture_sta&0x3f;temp*=65536;再加上捕獲到下降沿時的計數值,就是整個過程所需要的時間。

STM32F103輸入捕獲實驗

實驗介紹 本實驗利用tim5的通道1 io為pao 來捕獲按鍵key up 按下 輸入的高電平脈寬的時間,並且利用串列埠列印出來。要得出高電平脈寬的時間,就要設定兩次捕獲,第一次捕獲時,先設定為上公升沿捕獲,捕當獲到了高電平觸發相關計數器開始計數,然後再設定為下降沿捕獲,捕獲到了低電平,即高電平結束...

記錄 輸入捕獲

捕獲輸入訊號脈衝的寬度。捕獲的概念是,捕獲邊沿訊號,同時將定時器的計數值儲存下牢。通過檢測輸入通道 timx chx 上的邊沿訊號,在邊沿訊號發生跳變 上公升沿 下降沿 的時候,將當前定時器的值 timx cnt 存入對應的捕獲 比較暫存器 timx ccrx 中,完成一次捕獲。定時器的輸入通道,就...

輸入捕獲模式

異或那塊先不管他,好像跟編碼器有關,輸入有個特色就是可以把ti的輸入搞到cc1上去,也可以把t2的輸入搞到cc1上去,其實也可以把t1搞到cc1上去同時把t1搞到cc2上去,這樣就有了後來的pwm輸入。輸出上的特色是不直接輸出,而是有個oc1ref,這樣可以定義高有效還是低有效,輸出自己需要的有效電...