在做cc2530開發板一些實驗時候,經常會遇到一些最基本的問題,比如清中斷標誌位時候,是先清源中斷暫存器還是先是清cpu中斷標誌暫存器。
初始化中斷標誌:
p0ifg = 0x00;
在下面電路中需要將引腳定義為終端觸發引腳即 p0_1後面連線開關+gnd;
單向導電二極體負極為低電平時該發光二極體點亮,否則處於熄滅狀態,因此,在初始化開關函式時候,有如下定義:
p0ien |= 0x2; // p0.1 設定為中斷方式 1:中斷使能
pictl |= 0x1; //下降沿觸發
ien1 |= 0x20; //允許p0口中斷;
p0ifg = 0x00; //初始化中斷標誌位
ea = 1; //開啟總中斷
當 p0_1為低電平時候即p0_1=0,觸發中斷,
#pragma vector = p0int_vector
通過中斷函式入口位址進入中斷函式以此實現相應功能。
由於按鍵存在一定的振動,因此,需要進行消抖,該部分功能具體實現如下
...
if(p0ifg>0)
}
上述的p0ifg是埠0中斷狀態標誌,埠0中bit7~bit0為輸入中斷狀態標誌。當輸入埠中斷請求未決時,則其相應標誌位置1即可。
清中斷標誌命令
p0ifg = 0;
p0if = 0;
問題:清中斷標誌是先清源中斷暫存器還是cpu中斷標誌暫存器?
答:這要看中斷觸發方式是脈衝或者邊沿觸發還是電平觸發方式。如果為前者,則先清cpu中斷標誌暫存器;否則若是電平觸發方式,則先清源中斷標誌暫存器。
關於中斷請求標誌位
今天才發現我用了這麼長時間的中斷服務函式,竟然不知道中斷請求標誌位到底具體是什麼意思 悲哀!一般就用了定時器中斷服務函式,沒關心中斷請求標誌位,今天才發現,原來定時器中斷請求標誌位就是定時器溢位標誌位,定時器溢位時自動跳到相應中斷向量處,當主機響應該定時器中斷時,該標誌位由硬體自動清零。所以,我雖然...
中斷型別標誌
在呼叫request irq函式申請乙個irq 時,會傳入相應的中斷型別標誌。對於這些標誌新舊版本的核心實現是不完全相同的。irqf disabled 3.16.7 ct7版本核心中此標誌是沒有地方用到的。此標誌表示中斷在處理的時候是關中斷的,不能被另外的中斷所打斷。這篇文章裡有講到此標誌在新核心中...
彙編標誌位
of overflow flag 溢位標誌 運算元超出機器能表示的範圍表示溢位,溢位時為1.sf sign flag 符號標誌 記錄運算結果的符號,結果負時為1.zf zero flag 零標誌 運算結果等於0時為1,否則為0.cf carry flag 進製標誌 最高有效位產生進製時為1,否則為0...