FTM的PWM、输入捕获、正交解码
FTM是一個(gè)神奇的模塊,他能輸出PWM,能輸入捕獲,能輸出比較還能正交解碼。英文全稱是FlexTimer Module,你可以理解為高級(jí)定時(shí)器模塊、易用定時(shí)器模塊等等。不僅僅在Kinetis 32位處理器中,FTM是個(gè)常用的模塊,在飛思卡爾的8位處理器中,他也是個(gè)常用的模塊,只不過(guò)名字叫TPM。FTM會(huì)用了,飛思卡爾的其他單片機(jī)的FTM、TPM你就都會(huì)用了。在OSKinetis固件庫(kù)中,我們可以用FTM模塊來(lái)實(shí)現(xiàn)PWM、輸入捕獲和正交解碼等常用功能,借用庫(kù)函數(shù)實(shí)現(xiàn)功能不難,難的是理解這些功能怎么用、什么原理才是最重要的,下面我們一一介紹這3個(gè)功能。當(dāng)然看完本文你就能用寄存器編寫FTM的各個(gè)功能嗎,呵呵,不可能的!否則要那1000多頁(yè)的技術(shù)文檔干什么用,但是我希望本文能起到拋磚引玉的功能,在你會(huì)用庫(kù)函數(shù)的基礎(chǔ)上,對(duì)他的內(nèi)部機(jī)制有一個(gè)了解。
? 介紹幾個(gè)小伙伴(FTM寄存器)
要想搞清楚FTM模塊,首先我們要介紹幾個(gè)重要的寄存器給大家,他們就像小伙伴一樣,好好利用可以幫大忙呢。
- FTMx_CNT小朋友(計(jì)數(shù)器寄存器),他負(fù)責(zé)喊號(hào)(計(jì)數(shù))。
- FTMx_SC小朋友(狀態(tài)和控制寄存器),他負(fù)責(zé)……寄存器名字面意思,具體說(shuō)就是決定CNT小朋友的喊號(hào)的快慢(計(jì)數(shù)頻率,包括時(shí)鐘源的選擇和分頻系數(shù))。他還負(fù)責(zé)其他一些雜事,比如計(jì)數(shù)溢出、中斷使能等等。
- FTMx_MOD小朋友(模數(shù)寄存器),他負(fù)責(zé)記住一個(gè)數(shù)字,當(dāng)CNT小朋友喊道這個(gè)數(shù)字的時(shí)候,他就提醒相關(guān)人員干一些事情,比如產(chǎn)生溢出中斷標(biāo)志,比如讓CNT重新開始喊號(hào)。
- FTMx_CNTIN小朋友(計(jì)數(shù)器初始值寄存器),他告訴CNT小朋友哪哪個(gè)數(shù)開始喊。
- 其中x代表不同的FTM模塊的標(biāo)號(hào),比如MK60D系列單片機(jī),有3個(gè)FTM模塊,x就為0~2。
PWM輸出功能
PWM工作原理
PWM是什么,能做什么用,不是我們要講的,相信你也能百度到。這里我們主要講PWM在Kinetis的FTM模塊中是怎么工作的。還記得上面介紹的幾個(gè)小朋友嗎,他們只要一起干活,我們的PWM波就可以生成了,下面我來(lái)說(shuō)說(shuō)他們是怎么干活的。哦對(duì)了,說(shuō)到PWM還有一個(gè)小朋友要介紹,就是FTMx_CnV(通道值寄存器)小朋友。其中n代表FTMx有n個(gè)這樣的小朋友,對(duì)于FTM0模塊來(lái)說(shuō),有8個(gè)。他們8個(gè)人負(fù)責(zé)PWM的脈寬(即占空比),他們每個(gè)人也會(huì)記住一個(gè)數(shù)字,當(dāng)CNT喊道這個(gè)數(shù)字的時(shí)候,他就讓PWM的輸出產(chǎn)生上升或下降沿。
PWM最重要參數(shù)就是頻率(周期的倒數(shù))和占空比,下面的兩個(gè)公式解釋了他們是怎么確定的:
PWM的周期=(MOD–CNTIN +?1)?x?計(jì)數(shù)器周期
PWM的占空比=(CnV ? CNTIN)?/ PWM的周期
怎么樣,上面的公式結(jié)果都是由我們認(rèn)識(shí)的小朋友決定的吧。下面我來(lái)解說(shuō)下這個(gè)工作流程,首先公式中的計(jì)數(shù)器周期是SC小朋友決定的,前面說(shuō)了他負(fù)責(zé)喊號(hào)的快慢,因?yàn)樗?fù)責(zé)決定采用哪個(gè)頻率為輸入頻率,這些頻率候選有系統(tǒng)時(shí)鐘、固定頻率時(shí)鐘以及外部時(shí)鐘,他還負(fù)責(zé)這些輸入頻率的分頻系數(shù),總之SC小朋友決定了計(jì)數(shù)器周期,也就是CNT小朋友喊號(hào)的快慢。然后CNT小朋友從CNTIN小朋友那里知道了要喊的第一個(gè)數(shù),他按照SC決定的快慢一直喊道MOD告訴他的數(shù),喊完這些數(shù),一個(gè)PWM周期也就產(chǎn)生了!
那么PWM的脈寬是怎么決定的呢,首先假定CNT在喊第一個(gè)數(shù)的時(shí)候,PWM通道輸出高電平,當(dāng)CNT喊到CnV小朋友告訴他的號(hào)的時(shí)候,PWM輸出通道就會(huì)變?yōu)榈碗娖?#xff0c;直到CNT繼續(xù)喊道MOD的時(shí)候一個(gè)PWM周期結(jié)束,當(dāng)重新開始喊CNTIN的號(hào)的時(shí)候,PWM的輸出通道又變?yōu)榱烁唠娖?#xff0c;這樣持續(xù)下去,就產(chǎn)生了PWM波形!
你以為一個(gè)FTMx模塊只能輸出一路PWM就錯(cuò)了,我們剛才說(shuō)了CnV根據(jù)x的不同,有n個(gè)通道可以輸出PWM,如果是x=0,那么FTM0就有8個(gè)CnV,C0V到C7V這8個(gè)小朋友,因此FTM0可以輸出8路不同占空比的PWM,但是由于負(fù)責(zé)喊號(hào)的CNT以及他的其他小伙伴在FTM0中僅僅各有1人,因此FTM0只能輸出一種頻率的PWM。
如果上面的描述讓你和你的小伙伴都驚呆了,那么就看看上面這幅圖,從技術(shù)文檔中的Figure 39-181截出來(lái)的。紅圈后面的波形就行PWM輸出通道輸出的波形。深綠色的圈代表CNT從CNTIN開始計(jì)數(shù),此時(shí)輸出高電平。當(dāng)計(jì)數(shù)到CnV的時(shí)候,淺綠色圈處,產(chǎn)生channel(n)match通道匹配事件,變?yōu)榈碗娖健.?dāng)整個(gè)計(jì)數(shù)周期完成,即藍(lán)圈的范圍,CNT計(jì)數(shù)到MOD時(shí),一個(gè)波形輸出完成。
PWM例程講解
前面講了FTM中的幾個(gè)小伙伴的故事,目的是為了讓大家了解PWM的工作流程,下面我們來(lái)具體看看例程中,是如何利用庫(kù)函數(shù)來(lái)生成PWM的。首先看例程“LPLD_ServoControl”,這是一個(gè)控制舵機(jī)轉(zhuǎn)動(dòng)的例程,我們知道舵機(jī)的控制PWM頻率一般是50Hz,其他的舵機(jī)有可能不同,因此我們的初始化函數(shù)初始化PWM頻率為50,定位pwm_init()函數(shù),看其代碼:
?
| 01 | ftm_init_struct.FTM_Ftmx = FTM0; //使能FTM0通道 |
| 02 | ftm_init_struct.FTM_Mode = FTM_MODE_PWM; //使能PWM模式 |
| 03 | ftm_init_struct.FTM_PwmFreq = 50; //PWM頻率50Hz |
| 04 | LPLD_FTM_Init(ftm_init_struct); |
| 05 | LPLD_FTM_PWM_Enable(FTM0, //使用FTM0 |
| 06 | FTM_Ch0, //使能Ch0通道 |
| 07 | angle_to_period(0), //初始化角度0度 |
| 08 | PTC1, //使用Ch0通道的PTC1引腳 |
| 09 | ALIGN_LEFT //脈寬左對(duì)齊 |
| 10 | ); |
?
Line 1:使能FTM0通道。
Line 2:配置FTM_Mode成員變量,使用FTM的PWM輸出功能。
Line 3:配置PWM輸出的頻率為50Hz,你只要直接寫頻率的數(shù)值即可,至于剛才講的CNTIN、MOD、SC寄存器的值,庫(kù)函數(shù)會(huì)自動(dòng)搞定。而且切記,每個(gè)FTMx只能產(chǎn)生一種頻率,這個(gè)頻率在初始化配置時(shí)就確定了,如果你想用第二種頻率,就使能再初始化FTM1或FTM2了。
Line 4:調(diào)用FTM通用初始化函數(shù)初始化該模塊。
Line 5:PWM通道輸出使能函數(shù),你光配置了FTM0的PWM輸出功能還不夠,還要決定用哪個(gè)PWM通道來(lái)輸出波形哦!其中FTM0有8個(gè)通道,這里使能通道0 FTM_Ch0,每個(gè)通道又可能有不同的物理輸出引腳,這里用CH0的PTC1引腳來(lái)輸出PWM,還要配置占空比,這里我們用了自定義函數(shù)angle_to_period()來(lái)將舵機(jī)的角度值轉(zhuǎn)化為函數(shù)需要的占空比值。最后一個(gè)參數(shù)是PWM脈寬的對(duì)其方式,默認(rèn)是左對(duì)齊。關(guān)于此函數(shù)的參數(shù)的具體范圍,請(qǐng)參考FTM模塊的在線函數(shù)手冊(cè)(點(diǎn)擊進(jìn)入)。
初始化完成后的代碼如下所示:
?
| 1 | delay(1000); |
| 2 | //初始化延時(shí)后改變角度為45度 |
| 3 | LPLD_FTM_PWM_ChangeDuty(FTM0, FTM_Ch0, angle_to_period(45)); |
?
Line 1:在初始化完畢后,首先應(yīng)該延時(shí)一段時(shí)間,以保證舵機(jī)可以有足夠的時(shí)間歸位。
Line 3:調(diào)用LPLD_FTM_PWM_ChangeDuty()函數(shù)來(lái)改變CH0通道的占空比,該函數(shù)和PWM通道使能函數(shù)的個(gè)別參數(shù)一樣,使用時(shí)最好先參考在線函數(shù)手冊(cè)。
輸入捕獲功能
IC工作原理
IC就是Input Capture的英文縮寫,即輸入捕獲。很多新手不僅疑惑FTM,還疑惑他怎么還有這么多功能,更疑惑這么多功能中輸入捕獲到底干什么用。首先FTM為什么除了能生成PWM,還有其他功能,這都是因?yàn)樗羞@么多給力的小伙伴(寄存器),上面介紹那些小朋友不僅能生成PWM,還能利用自身特長(zhǎng),搖身一變成輸入捕獲功能。那么輸入捕獲有什么用呢,輸入什么?捕獲什么?他就像PWM的逆變一樣,通過(guò)輸入PWM方波,捕獲上升沿或者下降沿,來(lái)計(jì)算出PWM的頻率或者占空比。
那么這幾個(gè)小朋友是怎么工作,來(lái)實(shí)現(xiàn)輸入捕獲功能的呢,且聽我一一道來(lái)。首先CnV小朋友不再負(fù)責(zé)記住一個(gè)數(shù)了,而是隨時(shí)待命,隨時(shí)準(zhǔn)備記錄下CNT小朋友喊的數(shù)字。當(dāng)FTM的輸入通道產(chǎn)生一個(gè)上升沿或者下降沿的時(shí)候,就會(huì)產(chǎn)生一個(gè)中斷,這是CnV小朋友就會(huì)立刻記錄下CNT小朋友喊的數(shù)字,我們只要知道兩次中斷之間CnV小朋友記錄的計(jì)數(shù)的差,就可以間接計(jì)算出中斷間隔時(shí)間了,從而可以計(jì)算出PWM方波的頻率。當(dāng)然CNT小朋友喊號(hào)的頻率還是有SC小朋友決定的。假設(shè)我們知道CNT喊號(hào)的頻率為fCNT,CnV自從上次中斷后記錄的計(jì)數(shù)差為cv,配置捕獲上升沿時(shí)產(chǎn)生中斷,那么兩次中斷的時(shí)間差的倒數(shù)就是PWM方波的頻率:
輸入PWM頻率=fCNT/cv
同樣還是來(lái)看一下我從技術(shù)文檔中截下來(lái)的圖,原圖初出自Figure 39-175。紅框圈出來(lái)的是FTM的通道輸入,這個(gè)通道在物理引腳上和PWM的輸出通道是共用的,只不過(guò)隨著功能的不同,輸入輸出都可以。橙色圈代表的是判斷到底是上升沿還是下降沿來(lái)觸發(fā)沖斷。深色綠圈代表了CnV在這個(gè)事件來(lái)臨的時(shí)候記錄下CNT的數(shù)值,淺綠色是CNT計(jì)數(shù)器的值。藍(lán)色圈代表我們即將產(chǎn)生的中斷信號(hào)。
?IC例程講解
打開例程“LPLD_InputCapture”,在這里例程中,我們利用FTM0生成一路PWM,用于測(cè)試他的頻率,用FTM1配置為輸入捕獲模塊,來(lái)采集PWM并計(jì)算他的頻率。pwm_init()初始化函數(shù)的代碼我們就不贅述了,相信大家都能看懂,直接看下輸入捕獲的初始化函數(shù)ic_init()的代碼:
?
| 1 | ftm1_init_struct.FTM_Ftmx = FTM1; //使能FTM1通道 |
| 2 | ftm1_init_struct.FTM_Mode = FTM_MODE_IC; //使能輸入捕獲模式 |
| 3 | ftm1_init_struct.FTM_ClkDiv = FTM_CLK_DIV128; //計(jì)數(shù)器頻率為總線時(shí)鐘的128分頻 |
| 4 | ftm1_init_struct.FTM_Isr = ic_isr; //設(shè)置中斷函數(shù) |
| 5 | LPLD_FTM_Init(ftm1_init_struct); |
| 6 | LPLD_FTM_IC_Enable(FTM1, FTM_Ch0, PTB0, CAPTURE_RI); |
| 7 | LPLD_FTM_EnableIrq(ftm1_init_struct); |
?
Line 2:配置FTM1為輸入捕獲模式。
Line 3:設(shè)置計(jì)數(shù)器的分頻系數(shù)為128,剛才我們講過(guò)要計(jì)算PWM的頻率,就要知道CNT計(jì)數(shù)器的頻率,在OSKinetis固件庫(kù)中,CNT的時(shí)鐘源為總線時(shí)鐘,如果這里設(shè)置為FTM_CLK_DIV128,那么CNT的頻率就是總線頻率/128。
Line 4:設(shè)置FTM的中斷函數(shù),用于處理捕獲事件。
Line 6:使能輸入捕獲的輸入通道,和PWM的使能通道同理,這里要設(shè)置需要用到的通道號(hào)為FTM_Ch0,通道對(duì)應(yīng)的物理引腳為PTB0,捕獲邊緣為上升沿CAPTURE_RI。關(guān)于此函數(shù)的參數(shù)的具體范圍,請(qǐng)參考FTM模塊的在線函數(shù)手冊(cè)(點(diǎn)擊進(jìn)入)。
Line 7:一定要記住使能中斷。
?
輸入捕獲初始化完畢后,FTM1就會(huì)在PTB0有輸入PWM的時(shí)候產(chǎn)生中斷了,接下來(lái)看一下其中斷函數(shù)是怎么寫的:
?
| 01 | void ic_isr(void) |
| 02 | { |
| 03 | uint32 cnt; |
| 04 | if(LPLD_FTM_IsCHnF(FTM1, FTM_Ch0)) |
| 05 | { |
| 06 | cnt=LPLD_FTM_GetChVal(FTM1, FTM_Ch0); |
| 07 | Freq1=(g_bus_clock/LPLD_FTM_GetClkDiv(FTM1))/cnt; |
| 08 | LPLD_FTM_ClearCounter(FTM1); |
| 09 | LPLD_FTM_ClearCHnF(FTM1, FTM_Ch0); |
| 10 | } |
| 11 | } |
?
Line 4:首先調(diào)用LPLD_FTM_IsCHnF()函數(shù)判斷是不是FTM1的Ch0通道產(chǎn)生的捕獲事件,因?yàn)槊總€(gè)FTMx的所有通道中斷都是公用一個(gè)中斷函數(shù)的,所以為了安全,必須在中斷中判斷是哪個(gè)通道產(chǎn)生的中斷。
Line 6:獲得Ch0通道的計(jì)數(shù)值,并存到臨時(shí)變量cnt中。這個(gè)值就是C0V小朋友在事件來(lái)臨的一瞬間,從CNT那里記錄下來(lái)的計(jì)數(shù)值。
Line 7:用上將講到的頻率計(jì)算公式來(lái)計(jì)算出PWM的頻率。這里LPLD_FTM_GetClkDiv()可以得到我們初始化時(shí)設(shè)置的計(jì)數(shù)器分頻系數(shù),g_bus_clock變量是總線頻率的數(shù)值,用(g_bus_clock/LPLD_FTM_GetClkDiv(FTM1))就得到了計(jì)數(shù)器CNT的技術(shù)頻率,在除以cnt計(jì)數(shù)值,得到的就是輸入方波的頻率。
Line 8:用LPLD_FTM_ClearCounter()函數(shù)清空CNT小朋友的計(jì)數(shù)值,以便我們下次中斷獲取的值是從0開始的,方便計(jì)算。
Line 9:用LPLD_FTM_ClearCHnF()函數(shù)清除Ch0通道的中斷標(biāo)志。
正交解碼
正交解碼原理
講到正交解碼,其實(shí)并沒(méi)有什么神秘的,名字聽起來(lái)挺高端大氣上檔次的,其實(shí)實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,我覺(jué)得反而是FTM模塊中最簡(jiǎn)單的功能。首先要清楚正交解碼是干嘛用的,舉個(gè)栗子?霍爾編碼器是常用的電機(jī)測(cè)速傳感器,他不僅可以測(cè)速,還可以知道電機(jī)的正轉(zhuǎn)還是反轉(zhuǎn),靠的就是他能輸出兩路正交信號(hào),我們可以通過(guò)正交信號(hào)的相位差來(lái)識(shí)別出當(dāng)前電機(jī)的轉(zhuǎn)動(dòng)方向。因此有了FTM模塊,我們就可以將這兩路正交信號(hào)PhA和PhB輸入到FTM的正交輸入通道,通過(guò)正交解碼功能,直接讀取脈沖的計(jì)數(shù)值,這個(gè)計(jì)數(shù)值是有符號(hào)的,正數(shù)代表正轉(zhuǎn),負(fù)數(shù)則代表反轉(zhuǎn)。
具體到FTM內(nèi)部時(shí)怎樣工作的,還要提到CNT小朋友,在正交解碼模式下,他不再按照SC給定的規(guī)則喊號(hào)了,而是根據(jù)兩路PhA和PhB正交信號(hào)的狀態(tài)來(lái)計(jì)數(shù)。你也可以理解為CNT小朋友是一個(gè)解碼員,當(dāng)然具體是增計(jì)數(shù)還是減計(jì)數(shù),不是CNT說(shuō)了算,FTM內(nèi)部有一套復(fù)雜的機(jī)制決定。而且這個(gè)正交解碼功能有兩種解碼方法可以選擇,分別是計(jì)數(shù)和方向編碼、相位A和相位B編碼。他們的解碼方法如下面兩圖所示:
上圖是計(jì)數(shù)和方向編碼方法,紅框后面的波形是FTM輸入通道PhB的波形,它代表計(jì)數(shù)方向,籃框后面的波形是FTN輸入通道PhA的波形,它代表計(jì)數(shù)個(gè)數(shù),這是一種編碼方法,當(dāng)PhB為高電平時(shí),CNT加計(jì)數(shù),當(dāng)PhB低電平時(shí),CNT減計(jì)數(shù),計(jì)數(shù)頻率由PhA決定。從圖中還可以看出,CNTIN小朋友決定從什么數(shù)開始計(jì)數(shù),MOD小朋友決定計(jì)數(shù)到什么時(shí)候產(chǎn)生溢出中斷。
上圖是相位A和相位B編碼方法,這個(gè)是我們常用的正交解碼模式,也是霍爾編碼傳感器兩路波形輸出的方式。從圖中可以看到,當(dāng)PhA和PhB處于特定的電平和邊沿時(shí),他們的狀態(tài)共同決定了CNT是增還是減。具體原則如下:
CNT小朋友增計(jì)數(shù)時(shí)看到的是:
A上升沿,B邏輯低
B上升沿,A邏輯高
B下降沿,A邏輯低
A下降沿,B邏輯高
CNT小朋友減計(jì)數(shù)時(shí)看到的是:
A下降沿,B邏輯低
B下降沿,A邏輯高
B上升沿,A邏輯低
A上升沿,B邏輯高
正交解碼例程講解
要測(cè)試正交解碼例程,首先你要準(zhǔn)備兩路正交信號(hào),可以用霍爾編碼器的信號(hào)直接輸入。打開例程“LPLD_QuadratureDecoder”,看正交解碼初始化函數(shù)qd_init()的代碼:
?
| 1 | ftm_init_struct.FTM_Ftmx = FTM1; //只有FTM1和FTM2有正交解碼功能 |
| 2 | ftm_init_struct.FTM_Mode = FTM_MODE_QD; //正交解碼功能 |
| 3 | ftm_init_struct.FTM_QdMode = QD_MODE_PHAB; //AB相輸入模式 |
| 4 | LPLD_FTM_Init(ftm_init_struct); |
| 5 | LPLD_FTM_QD_Enable(FTM1, PTB0, PTB1); |
?
Line 2:配置FTM1為正交解碼功能,這里需要注意的是,FTM中只有FTM1和FTM2具有正交解碼輸入通道,FTM0是沒(méi)有的。
Line 3:選擇解碼模式為AB相輸入模式解碼QD_MODE_PHAB。
Line 5:使能FTM1的正交解碼物理輸入引腳,調(diào)用LPLD_FTM_QD_Enable()函數(shù),第二個(gè)參數(shù)是PhA相的物理引腳,第三個(gè)參數(shù)的PhB的。關(guān)于此函數(shù)的參數(shù)的具體范圍,請(qǐng)參考FTM模塊的在線函數(shù)手冊(cè)(點(diǎn)擊進(jìn)入)。
正交解碼初始化完畢后,還要初始化定時(shí)中斷模塊,因?yàn)槲覀円诠潭ǖ拈g隔時(shí)間內(nèi)獲取計(jì)數(shù)值才能計(jì)算出頻率,所以就務(wù)必會(huì)用到PIT模塊。pit_init()函數(shù)是PIT初始化函數(shù),相信大家都能讀懂,這里我就不重復(fù)解釋了。下面直接看PIT的中斷函數(shù)代碼:
?
| 1 | qd_result = LPLD_FTM_GetCounter(FTM1); |
| 2 | LPLD_FTM_ClearCounter(FTM1); |
?
Line 1:LPLD_FTM_GetCounter()函數(shù)可以獲取當(dāng)前FTM計(jì)數(shù)器即CNT小朋友的計(jì)數(shù)值,當(dāng)然這個(gè)值是有符號(hào)的,可以正可以是負(fù)數(shù)。如果是正代表電機(jī)在正轉(zhuǎn),如果是負(fù),代表電機(jī)在反轉(zhuǎn)。
Line 2:為了下次方便計(jì)數(shù),情況CNT的計(jì)數(shù)值。
當(dāng)然,本例程只是簡(jiǎn)單的獲取計(jì)數(shù)值,如果你要計(jì)算頻率,還用通過(guò)你的定時(shí)中斷時(shí)間進(jìn)一步計(jì)算。
FTM拾遺補(bǔ)缺
PWM死區(qū)
PWM死去是在是PWM輸出時(shí),為了使H橋或半H橋的上下管不會(huì)因?yàn)槠骷旧淼拈_關(guān)速度問(wèn)題導(dǎo)致同時(shí)導(dǎo)通而設(shè)置的一個(gè)保護(hù)時(shí)段。這個(gè)時(shí)間在Kinetis的FTM模塊也是可以設(shè)置的,當(dāng)然在庫(kù)函數(shù)使用時(shí)就更簡(jiǎn)單了,你只要在配置PWM輸出時(shí),配置FTM_PwmDeadtimeCfg和FTM_PwmDeadtimeDiv就可以了。這兩個(gè)成員變量的取值本文不再贅述,請(qǐng)參考在線函數(shù)手冊(cè)。
溢出中斷
除了輸入捕獲能產(chǎn)生中斷外,FTM內(nèi)部也會(huì)產(chǎn)生溢出中斷,這是你在使用輸入捕獲或者正交解碼時(shí)可能遇到的問(wèn)題,那么什么是溢出中斷呢,它是當(dāng)CNT計(jì)數(shù)器計(jì)數(shù)到上限時(shí)產(chǎn)生的一種中斷。你可以在初始化FTM時(shí)配置是否使能該中斷,利用成員變量FTM_ToiEnable。
- 有什么需求和疑問(wèn)歡迎聯(lián)系?support[AT]lpld.cn
- OSKinetis固件庫(kù)專業(yè)討論群,有機(jī)會(huì)和固件庫(kù)開發(fā)者一對(duì)一交流。QQ群:184156168(入群請(qǐng)輸入“LPLD固件庫(kù)”)
- OSKinetis V3固件庫(kù)及例程獲取:http://www.lpld.cn/?p=97
This entry was posted in?開發(fā)筆記?and tagged?K60,?跟我學(xué)OSKinetis?by?lpldcn. Bookmark the?permalink.
總結(jié)
以上是生活随笔為你收集整理的FTM的PWM、输入捕获、正交解码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机 超频
- 下一篇: 数据结构习题集1-8:总结篇