STM8輸入捕獲(網(wǎng)上).doc

STM8輸入捕獲(網(wǎng)上).doc

ID:59252475

大小:725.00 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2020-09-08

STM8輸入捕獲(網(wǎng)上).doc_第1頁(yè)
STM8輸入捕獲(網(wǎng)上).doc_第2頁(yè)
STM8輸入捕獲(網(wǎng)上).doc_第3頁(yè)
STM8輸入捕獲(網(wǎng)上).doc_第4頁(yè)
STM8輸入捕獲(網(wǎng)上).doc_第5頁(yè)
資源描述:

《STM8輸入捕獲(網(wǎng)上).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、[原]STM8輸入捕獲2014-9-4閱讀324評(píng)論0最近在用STM8的過(guò)程中需要用到一個(gè)頻率檢測(cè)的功能,還好STM8S207的定時(shí)器中自帶有輸入捕獲功能,之前還想著用定時(shí)器計(jì)數(shù)方式來(lái)實(shí)現(xiàn)的,但既然人家提供了該功能,那就試試吧,由于硬件里面接的是PC1引腳就只看了Timer1,其他的定時(shí)器應(yīng)該也是類(lèi)似的,看了資料之后發(fā)現(xiàn)STM8的輸入捕獲其實(shí)與STC12C5A60S2中的PCA捕獲模式很類(lèi)似,但是看資料沒(méi)有后者清晰易懂。。。在捕獲模式中,基本上只用到了讀進(jìn)程,在STM8中有一個(gè)影子寄存器,但對(duì)于我們來(lái)說(shuō)是看不到的,我們僅操作預(yù)裝載寄存器即可。而且需要注意的是無(wú)論

2、是計(jì)數(shù)器還是捕獲/比較寄存器都是先讀/寫(xiě)高8位,后讀/寫(xiě)低8位數(shù)據(jù)。在文檔中給出了一個(gè)輸入捕獲模式的流程按著這個(gè)流程來(lái)就可以完成我們的輸入捕獲文檔中首先提到將TIM1_CCMR1寄存器的CC1S位寫(xiě)01,將端口配置為輸入,但在TIM1_CCMR1的寄存器中有說(shuō)明CC1S位的更改需在通道關(guān)閉時(shí)(TIM1_CCER1寄存器的CC1E=0)才可寫(xiě)入,因此在配置中先將TIM1_CCER1寄存器的CC1E位寫(xiě)0,然后將TIM1_CCMR1的CC1S位寫(xiě)01,TIM1_CCER1&=(unsignedchar)~0x01;//清零TIM1_CCER1中的CC1E位,之后才可

3、配置TIM1_CCMR1TIM1_CCMR1=0x01;//配置TIM1_CCMR1中的CC1S位為1,CC1通道配置為輸入,IC1映射到TI1FP1上//無(wú)濾波器、無(wú)預(yù)分頻器(捕獲輸入口上檢測(cè)到的每一個(gè)邊沿都觸發(fā)一次捕獲)TIM1_CCMR1寄存器有兩種功能,分別對(duì)應(yīng)捕獲模式和比較模式,只需要捕獲模式即可濾波器是用來(lái)避免頻率波動(dòng)的直接寫(xiě)0即可,無(wú)濾波器,分頻器我們也寫(xiě)00不用分頻器,當(dāng)然也可以使用分頻器,提高準(zhǔn)確率。接著是設(shè)置觸發(fā)方式,我們選擇上升沿觸發(fā)TIM1_CCER1&=(unsignedchar)~0x02;//上升沿或者高電平觸發(fā)最后使能捕獲功能,設(shè)

4、置TIM1_CCER1寄存器的CC1E位=1,由于我們采用中斷方式因此也將TIM1_IER寄存器的CC1IE位置1,允許中斷請(qǐng)求。完整的初始化代碼如下voidsignal_capture_Init(void){TIM1_CNTRH=0x00;//清零計(jì)數(shù)器高8位TIM1_CNTRL=0x00;//清零計(jì)數(shù)器低8位TIM1_PSCRH=0x00;//計(jì)數(shù)器時(shí)鐘分頻高8位TIM1_PSCRL=0x10;//計(jì)數(shù)器時(shí)鐘分頻低8位16分頻TIM1_CCER1&=(unsignedchar)~0x01;//清零TIM1_CCER1中的CC1E位,之后才可配置TIM1_CC

5、MR1TIM1_CCMR1=0x01;//配置TIM1_CCMR1中的CC1S位為1,CC1通道配置為輸入,IC1映射到TI1FP1上//無(wú)濾波器、無(wú)預(yù)分頻器(捕獲輸入口上檢測(cè)到的每一個(gè)邊沿都觸發(fā)一次捕獲)TIM1_CCER1&=(unsignedchar)~0x02;//上升沿或者高電平觸發(fā)TIM1_IER

6、=0x02;//CC1IE=1,使能捕獲/比較1中斷TIM1_CCER1

7、=0x01;//捕獲使能TIM1_CR1

8、=0x01;//使能定時(shí)/計(jì)數(shù)器}當(dāng)發(fā)生一個(gè)輸入捕獲時(shí),計(jì)數(shù)器的值被傳送到TIM1_CCR1寄存器中,計(jì)時(shí)器的時(shí)鐘源在程序中我們?cè)O(shè)置為16分

9、頻分頻過(guò)后計(jì)數(shù)器的頻率為1MHz,這里采用分頻主要是避免計(jì)數(shù)器溢出,這樣同時(shí)也降低了精度,同時(shí)設(shè)置計(jì)數(shù)器的初值為0,計(jì)數(shù)器默認(rèn)計(jì)數(shù)方式是向上計(jì)數(shù),計(jì)到最大值后又從0開(kāi)始計(jì)數(shù),中斷處理代碼如下@far@interruptvoidsignal_capture_irq(void){if(TIM1_SR1&0x02){TIM1_SR1&=(unsignedchar)~0x02;//清除CC1IF標(biāo)志if(vsync_cap_data_old==0x00){//第一次捕獲中斷來(lái)臨vsync_cap_data_old=TIM1_CCR1H;//先讀取高8位數(shù)據(jù)vsync_c

10、ap_data_old=(unsignedint)(vsync_cap_data_old<<8)+TIM1_CCR1L;//再讀取低8位數(shù)據(jù)}else{//第二次捕獲中斷來(lái)臨vsync_cap_data_new=TIM1_CCR1H;//先讀取高8位數(shù)據(jù)vsync_cap_data_new=(unsignedint)(vsync_cap_data_new<<8)+TIM1_CCR1L;//再讀取低8位數(shù)據(jù)TIM1_IER&=(unsignedchar)~0x02;//禁止通道1捕獲/比較中斷TIM1_CR1&=(unsignedchar)~0x01;//停止計(jì)數(shù)

11、器if(vsync_ca

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。