在《華大HC32F4A0之32位計數(shù)器的問題》當(dāng)中我們提到過32位計數(shù)器和16位計數(shù)器在用于捕獲方面的不同之處,要知道在460的芯片當(dāng)中32位計數(shù)器是采用雙16位計數(shù)器級聯(lián)形成的。 然而如果我們需要使用32位計數(shù)器進(jìn)行捕獲的話,采用這樣的級聯(lián)方式是沒有辦法實現(xiàn)的,為什么呢? 首先我們要了解定時器捕獲的原理,所謂定時器捕獲其實對于定時器來說是分為兩個步驟進(jìn)行的,首先定時器按照設(shè)定好的時鐘進(jìn)行計數(shù),此時定時器有數(shù)個輸入端(一般一個定時器有兩個)作為輸入信號捕獲檢測。 一旦滿足我們設(shè)定的上升沿或者下降沿捕獲條件之后此時定時器會有兩個專門的寄存器記錄當(dāng)前定時器的計數(shù)值,從而能夠獲取到捕獲信號的上升沿和下降沿的時間,進(jìn)行比較可以計算周期、相位等等。 然而如果采用的是16位計數(shù)器級聯(lián)形成的32位計數(shù)器那么我們只能把待捕獲的信號接入到其中一個定時器當(dāng)中,這樣的話前低16位計數(shù)器能夠正常捕獲,但是高16位計數(shù)器并不知道什么時候來了捕獲信號,此時它只能等到第16位計數(shù)器溢出之后才能夠產(chǎn)生一個溢出時鐘,才能夠產(chǎn)生一個時鐘信號進(jìn)行計數(shù)。 如果我們的上升沿和下降沿時間差別較大的話而且這個時間如果是隨機不確定的話,很有可能存在上升沿跟下降沿時間在第16位計數(shù)器當(dāng)中,看起來好像沒有差一個16位的數(shù),但是在高16位計數(shù)器當(dāng)中,很有可能會差數(shù)個16位的數(shù)的倍數(shù)卻不知道的這么一種情況。 為什么會要采用32位計數(shù)器也是因為我們需要捕獲的信號以16位定時器不能滿足要求,這時候就需要使用4A0或者448,而460就不滿足要求了。 有人說那么如果采用級聯(lián)的32位計數(shù)器將捕獲信號并聯(lián)復(fù)接到兩個計數(shù)器當(dāng)中,是否就可以滿足以上要求呢? 答案也是否定的,因為對計數(shù)器來說高16位計數(shù)器平時是沒有時鐘的,根本不會工作計時。 最后,我們會不定期更新關(guān)于華大單片機開發(fā)方面的實用干貨,歡迎點贊關(guān)注! 平臺微信公眾號:Zye-BBS 一個服務(wù)我們河南電子人的電子技術(shù)平臺 中原電子社區(qū)——為中原電子行業(yè)的繁榮而努力 有技術(shù)問題請掃一掃下方二維碼
Copyright © 2022 鄭州品和電子科技有限公司 版權(quán)所有本公司深耕8位、32位Cortex-M0+&Cortex-M4單片機應(yīng)用開發(fā)和軟件設(shè)計服務(wù)! 備案號:豫ICP備16015205-1號
技術(shù)支持:13516243932