KW36 註冊中斷處理函式

2021-10-06 03:49:19 字數 1719 閱讀 2459

以註冊 2.4g radio irq 為例

鏈結檔案定義 標號

__vector_table

__ram_vector_table_size

__vector_ram

//icf 鏈結檔案

define exported symbol __vector_table = m_interrupts_start;

define exported symbol __vector_ram =

isdefinedsymbol

(__ram_vector_table__)

? m_interrupts_ram_start : m_interrupts_start;

define exported symbol __ram_vector_table_size = __ram_vector_table_size__;

define exported symbol __boot_stack_address = m_data_end-

0x0f

;

//kw36標頭檔案

typedef

enum irqn

;

installirqhandler 中斷註冊函式 傳入引數

中斷號 irq 和 中斷處理函式 irqhandler

uint32_t installirqhandler

(irqn_type irq, uint32_t irqhandler)

/* point the vtor to the position of vector table */

scb->vtor =

(uint32_t)__vector_ram;

//設定 vector 位址值

} ret = __vector_ram[irq +16]

;//原始值儲存在ret變數中並返回

/* 重新註冊 2.4g radio irq 中斷處理函式 */

__vector_ram[irq +16]

= irqhandler;

enableglobalirq

(irqmaskvalue)

;//使能全域性中斷

return ret;

}

radio irq 中斷處理函式

void

controller_interrupthandler

(void

)//呼叫示例

installirqhandler

(radio_0_irqn,

&controller_interrupthandler)

;nvic_clearpendingirq

(radio_0_irqn)

;//清中斷

nvic_enableirq

(radio_0_irqn)

;//使能中斷

/* *設定優先順序

*引數1 為 中斷號,

*引數2 為 優先順序

*/nvic_setpriority

(radio_0_irqn,

0x80u

>>(8u

-(uint8_t)__nvic_prio_bits)

);

中斷註冊函式整理

中斷註冊函式整理 archipcint interruptregister obj remoteprocid,obj params.localintid,notifydrivershm isr,ptr obj int32 archipcint interruptregister uint16 pro...

時鐘中斷處理函式

以前的中斷處理函式只做為測試用,其實問題還很多,我把它放到了乙個專門的檔案中,kernel system call.s 如下 globl timer interrupt timer interrupt incl jiffies movb 0x20,al outb al,0x20 call do ti...

中斷註冊函式分析總結

include 函式原型如下 int request irq unsigned int irq,void handler int,void struct pt regs unsigned long frags,const char device,void dev id request irq uns...