S3C6410裸機中斷終於搞定了,

2021-08-15 17:56:34 字數 1907 閱讀 5951

,使用vic" rel="noopener noreferrer">s3c6410裸機中斷終於搞定了,不需要彙編 ,使用vic

劍橋石

經過幾天的努力

,終於搞定了

s3c6410

裸機中斷

,測試使用的是外部中斷0組的

pn0,

使用定時器0。

之前一直很鬱悶的是網上的一些

s3c6410

使用的中斷都是像

51微控制器那樣的固定中斷向量入口

,這種方式不僅需要彙編支援

,而且效率相當的低下,既然

s3c6410

自帶有中斷處理協處理器

vic,

那麼我還是建議使用

vic來管理中斷。

為了向下相容,6410保留了2410的軟體中斷跳轉方式,在三星的文件裡被稱為systembus模式,預設的,而其特有的vic port模式則要手動開啟,啟動**:

mrc p15,0,r0,c1,c0,0

orrr0,r0,#(1<<24)

mcr p15,0,r0,c1,c0,0

將其加到啟動檔案的main函式入口點之前(start.s)即可開始vicport模式,在這個模式下,中斷的使用簡單了不少,比如說我要用某個按鍵來實現外部中斷,則相應的過程如下:

1. 初始化中斷向量控制器:

填充 rvicxintenclear ,清空vicxintselect和vicxaddr,這步嘛沒什麼可說的,就是乙個簡單的重置工作。

2.  配置按鍵對應的gpio腳為中斷模式:

gpxxcon 每乙個腳的配置占此暫存器的2位,其中中斷配置為10b,將對應的兩位位設為10b即可使用中斷功能。

3. 開啟中斷:

將vicxintenable對應位置"1"即可開啟對應的中斷,比如要開啟11號中斷,就將此暫存器第11位置"1",注意此暫存器是32位的,x=0的時候開啟0-31號中斷,x=1時開啟剩下的中斷。

4. 設定外部中斷型別:

操作einxcony,中斷分組對應的暫存器可以在三星的手冊里查到,每兩個中斷占用暫存器的三位,換句話說,暫存器每三位控制兩個中斷的觸發方式,其中中斷號小的偶數的兩倍對應起始位,中斷號大的奇數的兩倍對應結束位,例如eint11、10,對應暫存器的[22:20]三位,這三位怎麼配手冊上有詳細描述,不廢話。

5. 裝載中斷伺服程式:/

void led_init(void)

void delay(u32 n)}

void __irqirq_exception(void)

void key_init(void)

void __irqisr_timer0(void)

voidtimer0_init(void)

//主函式

void main(void)}}

//把下面的彙編加入到啟動檔案中,主要用來開啟cpu中斷和初始化vic

;vic port模式,開啟後就可以不用彙編使用中斷,使用vic控制中斷

mrc p15,0,r0,c1,c0,0

orr r0,r0,#(1<<24)

mcr p15,0,r0,c1,c0,0

;允許中斷,開啟cpu總中斷

mrs r0, cpsr  

;將cpsr儲存至r0暫存器中

bic r0, r0, #0x80  

;r0 = r0 & ~0x80,清除中斷位

msr cpsr_c, r0  

;將r0寫回cpsr狀態寄存

以上就是相關的**

,因為大家的暫存器巨集定義不同

,因此名字可能不同

,因為我寫了注釋的

,大家可以對著文件

,設定相應的暫存器就可以了,

如果需要可以找我,郵箱

:[email protected]

**:裸機外部中斷+定時器中斷 

S3C6410按鍵驅動 中斷方式

本文 cpp view plain copy include include include include include include include include include include include include include 新版核心 include include st...

S3C6410 中斷例子程式

eint0con0 external interrupt 0 group0 configuration register 0 設定 外部中斷的觸發方式 高電平等 eint0pend external interrupt 0 group0 pending register 遮蔽前的中斷 誰中斷,相應位...

S3c6410在RVDS2 2下裸機浮點問題

近在使用s3c6410裸機的時候用到浮點型時候程式一直無結果輸出,網上查了很久,說需要設定vfpv2 vfpenable equ 0x40000000 vfp使能設定 啟用通過協處理器訪問vfp控制暫存器 mrc p15,0,r0,c1,c0,2 orr r0,r0,0x00f00000 mcr p...