天天看點

CC2530中斷初始化和中斷函數中斷初始化中斷函數

相關寄存器在cc2530中文數手冊中2.4小節

中斷初始化

其實中斷的初始化可以參照引腳的初始化,即4個寄存器(PxSEL,PxDIR,PxINP,P2INP)。中斷同樣也要初始化

1)初始化輸入信号寄存器(PICTL)

設定中斷的觸發(開始)條件

例如:PICTL |= 0x01 設定端口P0_7中斷觸發方式為下降沿觸發

PICTL &=~0x02 設定端口P1_2中斷觸發方式為上升沿觸發

CC2530中斷初始化和中斷函數中斷初始化中斷函數

2)初始化中斷使能端口寄存器(PxIEN)

設定Px端口中斷使能

例如:P0IEN |=0x02 使能端口0_1

P1IEN |=0x08 使能端口1_3

CC2530中斷初始化和中斷函數中斷初始化中斷函數

3)初始化中斷使能寄存器1(可位尋址)

例如:P0IE=1 端口0中斷使能 也可以寫為 IEN1 |=0x20

P1IE=1 端口1中斷使能 也可以寫完 IEN2 |=0x10

CC2530中斷初始化和中斷函數中斷初始化中斷函數
CC2530中斷初始化和中斷函數中斷初始化中斷函數
CC2530中斷初始化和中斷函數中斷初始化中斷函數

4)打開總中斷

EA=1 或者 IEN0 |=0x80

CC2530中斷初始化和中斷函數中斷初始化中斷函數

5)PxIFG 中斷狀态标志寄存器

例如 P0IFG |= 0x0F 設定端口P0_0到P0_3的端口請求狀态

CC2530中斷初始化和中斷函數中斷初始化中斷函數

中斷函數

中斷函數沒有傳回值和參數

中斷向量名稱

CC2530中斷初始化和中斷函數中斷初始化中斷函數
#pragma vector = <中斷向量>
__interrupt void <中斷名稱>(void){
if(判斷中斷到來标志位是否是1){
	EA=0;//關閉總中斷
	 delay(100);//延時防止抖動
	 //操作
	 P0IFG &= ~0x02;//手動清除Px端口的标志位
  }
  P0IFG =0;//複位Px端口的标志位
  EA=1;
}
           

上面代碼和例子僅供參考,如果有誤請留言。

繼續閱讀