音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

如何開了一個FIQ的情況下再開其它的IRQ

作者:w_ang 欄目:ARM技術(shù)
如何開了一個FIQ的情況下再開其它的IRQ
在只開FIQ或IRQ時,都正常,但同時開時,只有FIQ,卻沒有IRQ,請高手指教,如何才能讓其都產(chǎn)生中斷.
我的程序如下://T0為匹配0的中斷,FIQ
         T0PR = 0;
    T0MCR =0x03;
    T0MR0 =Fpclk/20000;
     
    FIQEnable();   //快中斷使能
    VICIntSelect = VICIntSelect|(1<<4);  //FIQ
    VICIntEnable = VICIntEnable|(1<<4);

    T0TCR =0x01;    //開計數(shù)器
    
         //T1為匹配0的中斷,IRQ
         T1TC = 0;        //清T1
    T1PR = 0;        //預(yù)分頻
    T1CTCR = 0;        //T1為定時器
    T1MCR = 0x03;    //T1MR0匹配后復(fù)位,并產(chǎn)生中斷
    T1MR0 = Fpclk/1000;//初始頻率為1000Hz
    T1TCR = 0x03;    //復(fù)位

    IRQEnable();            //中斷使能
    
    VICIntSelect = 0x00;    //分配為IRQ
    VICVectCntl0 = 0x20|0x05;    //分配優(yōu)生級
    VICVectAddr0=(uint32)T1MC0;//設(shè)置中斷地址
    VICIntEnable = VICIntEnable|(1<<5);    //開T1匹配0中斷
    T1TCR =0x01;    //開計數(shù)器


//T1 MR0匹配中斷函數(shù)
         void __irq T1MC0(void)
     {    
    
    T1IR = 1<<0 ;//清中斷
    T1MR0 = Fpclk/500;//設(shè)定速度
        
    VICVectAddr=0x00;//向量中斷處理結(jié)束
    
    }

//FIQ的中斷函數(shù)
        void FIQ_Exception(void)
{
    //while(1);                   // change it to your code  這一句替換為自己的代碼
    
    LEDON();
    T0IR =0x01;        //清中斷標(biāo)志
    LEDOFF();    
        
}



2樓: >>參與討論
zlgARM
RE
w_ang :
    IRQEnable()最終是跳到啟動文件里的IRQEnable執(zhí)行;
    FIQDisable()最終是跳到啟動文件里的FIQDisable執(zhí)行。
    如您所見,這兩個操作是彼此互斥的。
    您可以自己參照著啟動文件和IRQEnable()的寫法,寫一個軟中斷,令CPSR使能IRQ和FIQ中斷。      



    
IRQEnable
        ;開IRQ中斷
        MRS   R0, SPSR
        BIC   R0, R0, #NoInt
        MSR   SPSR_c, R0
        MOVS    PC, LR
        
FIQDisable
        ;關(guān)FIQ中斷
        MRS     R0, SPSR
        ORR     R0, R0, #NoFIQ
        MSR     SPSR_c, R0
        MOVS    PC, LR


3樓: >>參與討論
w_ang
多謝!我試試
 
4樓: >>參與討論
w_ang
忙了一晚上,也沒搞定,還望周工指教
1.可不可以同時開一個FIQ,多個IRQ?
2.FIQ可不可以中斷正在執(zhí)行的IRQ?
3.如何實現(xiàn)?
是不是在LPC213X的模板下只能采用軟中斷(IRQ)中修改CPSR?
在STARTUP.S中
       ;設(shè)置系統(tǒng)模式堆棧
        MSR     CPSR_c, #0x0f   ;開F&I
        LDR     SP, =StackUsr

        MOV     PC, R0
只修改此處,而不再調(diào)用IRQ_Enable()和FIQ_Enable()為什么程序只產(chǎn)生前述程序中的T0中斷而沒有T1的中斷,且主程序不能再運行.

5樓: >>參與討論
zlgARM
RE
1:可以;如果這都無法實現(xiàn),那么FIQ相對于IRQ的高優(yōu)先級還有意義嗎?
2:可以。

首先,如果要求可以同時允許FIQ和IRQ,那么必要條件是CPSR里允許了FIQ和IRQ中斷。
調(diào)試一下您的程序,確保這個必要條件,問題的核心是讓CPSR同時令FIQ和IRQ使能,看看是程序哪個地方破壞了這個條件。做了試驗才知道,先往這個方向試一下吧。

6樓: >>參與討論
w_ANG
解決了.
用兩種方式都可以,
1.修改STARTUP.S中的
       ;設(shè)置系統(tǒng)模式堆棧
        MSR     CPSR_c, #0xdf   ;關(guān)F&I
為      MSR     CPSR_c, #0x1f   ;開F&I

2.象1樓的程序,不改.
只是編譯方式由DebugInFlash改為RelInFlash,就可以了,是不是模板中有BUG?


7樓: >>參與討論
hotpower
實際也可以控制VICIntEnable
 
8樓: >>參與討論
zlgARM
RE
w_ANG:
    問題解決九號!或許有BUG。歡迎您調(diào)試出來告訴我們,我們好改進(jìn)!謝謝。

9樓: >>參與討論
lijing1982
詢問
我想問一下,FIQ和IRQ的區(qū)別,樓主能給解釋一下嗎?

10樓: >>參與討論
w_ang
lijing1982 :FIQ快中斷,主要特點就是一個字:(響應(yīng))快.
FIQ快中斷,主要特點就是一個字:(響應(yīng))快.
次要特點:可以中斷正在執(zhí)行的IRQ.
IRQ就是沒有這兩特點的中斷了,
你能明的嗎?

11樓: >>參與討論
lijing1982
to w_ang
謝謝你的回答,這個我理解了!!但是ZLG出的一本書上講,FIQ最好設(shè)置成一個,要不會影響時間的,是嗎?我覺的一般的中斷設(shè)置成IRQ就可以了,是不是不用設(shè)置成FIQ;在什么情況下需要設(shè)置,舉個例子好嗎?

12樓: >>參與討論
w_ang
TO:lijing1982
是這樣的,在我的應(yīng)用中有一個信號實時性的要求特別高,我覺著最好的辦法就是讓一個FIQ來響應(yīng)它.所以我這樣用了.

13樓: >>參與討論
lijing1982
to w_ang
好的,謝謝。∮袡C會向你請教!

14樓: >>參與討論
lijing1982
to w_ang
我想問一下,分布裝載描述文件是bootloader嗎?

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教周工:串口實驗的程序是不是錯了?
請問一下關(guān)于中斷的問題
請問zlg你們什么時候出arm9的開發(fā)板
請教213x外部中斷問題
2131控制74164掃鍵盤 的 問題
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號