久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    ColdFire 32位微控制器學(xué)習(xí)系列七

     WUCANADA 2012-07-28
    COLDFIRE系列處理器的中斷使用和其他單片機(jī)(如9S12)并不相同,可以說(shuō)功能更加強(qiáng)大,但是使用起來(lái)要復(fù)雜些。在FREESCALE論壇上,問(wèn)的最多的問(wèn)題也就是“進(jìn)不了中斷的問(wèn)題”,這也是COLDFIRE入門(mén)學(xué)習(xí)最棘手的問(wèn)題之一。
    在COLDFIRE上使用中斷的流程基本是這樣的:

    寫(xiě)SR開(kāi)全局中斷--->設(shè)置某中斷LEVEL和PRIO,寫(xiě)屏蔽碼--->編寫(xiě)中斷服務(wù)程序,寫(xiě)中斷向量表--->初始化并運(yùn)行程序

    以下代碼均以使用PIT0產(chǎn)生每100ms一個(gè)中斷為例。
    1、寫(xiě)SR開(kāi)全局中斷:
        這個(gè)功能其實(shí)完全可以通過(guò)一句話來(lái)完成,在這里,必須寫(xiě)SR的16/17/18三位為0,才可以打開(kāi)全局中斷。這是初學(xué)者容易忽略和犯錯(cuò)誤的問(wèn)題。有些朋友已經(jīng)設(shè)置好中斷優(yōu)先級(jí)和等級(jí),打開(kāi)屏蔽,初始化好并且做好向量表,發(fā)現(xiàn)還是無(wú)法進(jìn)入中斷,問(wèn)題就是出在了這里。
        大家需要注意的是,COLDFIRE單片機(jī)開(kāi)始運(yùn)行時(shí),SR中16/17/18三位的值都是1,這樣是關(guān)閉了所有中斷的,所以要使用中斷,必須把這三位都設(shè)置為0,這就相當(dāng)于一個(gè)總閘,如果你總閘不開(kāi),你怎么設(shè)置中斷都是不能夠運(yùn)行的。
        用這句話來(lái)實(shí)現(xiàn):
        asm{ move.w    #0x2000,SR };
        有了這句話寫(xiě)在MAIN函數(shù)的首位,全局中斷就打開(kāi)了。

    2、設(shè)置中斷LEVEL和PRIO:
        COLDFIRE可以管理中斷的LEVEL和PRIO,必須設(shè)置它才可以使中斷工作。這點(diǎn)的具體內(nèi)容可以在DS的中斷控制器那章找到。在這里就不再具體講了,以PIT0為例,代碼如下:
     MCF_INTC0_ICR55 = MCF_INTC_ICR_IL(0x3) |
                   MCF_INTC_ICR_IP(0x3);
        這里設(shè)置的中斷LEVEL為3,中斷PRIO為3,這個(gè)都是用戶可以指定的。設(shè)置好LEVEL和PRIO,還必須打開(kāi)中斷屏蔽碼,否則中斷也無(wú)法工作了。以PIT0為例,代碼如下:
     MCF_INTC0_IMRH &= ~MCF_INTC_IMRH_INT_MASK55;
     //Open the local mask
     MCF_INTC0_IMRL &= ~MCF_INTC_IMRL_MASKALL;
     // Open the maskall
        這樣這部分工作就完成了。
    3、編寫(xiě)中斷服務(wù)程序,寫(xiě)中斷向量表:
        中斷服務(wù)程序中一般要清除中斷標(biāo)志,這點(diǎn)人人皆知了,但是在CW IDE 6.3/4中,聲明中斷服務(wù)程序有一個(gè)格式,以PIT0為例,必須寫(xiě)成:
        __declspec(interrupt:0) void PIT0_isr(void)
        {
            ……
        }
    函數(shù)名可以自己起。跟9S12使用interrupt關(guān)鍵字有所不同。
        另外需要寫(xiě)中斷向量表,一般在“xxxx_vector.s”文件中,到對(duì)應(yīng)位置,把定義的中斷服務(wù)程序名寫(xiě)入。這里要注意的是,函數(shù)名前必須加下劃線“_”,這個(gè)是指對(duì)應(yīng)的匯編程序,代碼如下:
    vector117:    .long    asm_exception_handler
    vector118:    .long    asm_exception_handler
    vector119:    .long    _PIT0_isr
    vector120:    .long    asm_exception_handler
    vector121:    .long    asm_exception_handler
        在本文件中這樣寫(xiě)還是會(huì)提示錯(cuò)誤,因?yàn)橹袛喾?wù)程序是在其他文件中編寫(xiě)的,必須聲明它為外部函數(shù),這樣在此文件的前一部分加入:
    .extern _PIT0_isr
        就可以了。
    4、初始化并運(yùn)行程序:
        PIT0的初始化和ISR的編寫(xiě),在本系列學(xué)習(xí)文章的第五篇都有了。有興趣的可以翻閱一下以前的文章。

    好,這就是使用COLDFIRE中斷的流程,不僅僅是PIT0,使用其他中斷也都是大同小異,希望能夠大家?guī)?lái)幫助。
    到此,COLDFIRE學(xué)習(xí)系列的入門(mén)級(jí)文章就結(jié)束了,其他模塊其實(shí)也沒(méi)什么好寫(xiě)的。下一個(gè)系列將推出比較高級(jí)一點(diǎn)的文章,主要重點(diǎn)會(huì)放在嵌入式操作系統(tǒng)和以太網(wǎng)上。謝謝關(guān)注。

      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶 評(píng)論公約

      類(lèi)似文章 更多

      主站蜘蛛池模板: 国产精品女视频一区二区| jizzjizz少妇亚洲水多| 亚洲va久久久噜噜噜久久狠狠| 中文字幕精品人妻丝袜| 亚洲男女内射在线播放| 116美女极品a级毛片| 蜜桃臀无码AV在线观看| 2021国产成人精品久久| 国产裸体XXXX视频在线播放| 国产丰满乱子伦无码专区| 欧美老少配性行为| 欧美 日韩 亚洲 精品二区| 麻豆国产成人AV在线播放| 人人妻人人藻人人爽欧美一区 | 亚洲国产午夜精品福利| 免费无码成人AV在线播放不卡| 免费av深夜在线观看| 亚洲AV天天做在线观看| 人妻系列无码专区免费| 国产激情视频在线观看的| 精品无码日韩国产不卡AV| jizzjizz少妇亚洲水多| 精品日韩亚洲AV无码一区二区三区| 日本一道一区二区视频| 午夜精品一区二区三区在线观看| 97欧美精品系列一区二区| 亚洲国产一线二线三线| 国产色综合久久无码有码| 日本高清在线观看WWW色| 国产天堂亚洲国产碰碰| 国产激情电影综合在线看| 亚洲熟妇自偷自拍另类| 人妻少妇精品一区二区三区| 四虎永久地址WWW成人久久| 在线中文一区字幕对白| 国模精品一区二区三区| 欧美日韩一区二区综合| 免费观看欧美猛交视频黑人| 色婷婷在线精品国自产拍| 无码人妻久久一区二区三区APP| 成人看的污污超级黄网站免费|