Zynq中斷大致可分為三個(gè)部分
第一部分為SGI,軟件生成的中斷,共16個(gè)端口;
第二部分為PPI,CPU私有外設(shè)中斷,有5個(gè);
第三部分為SPI,共享外設(shè)中斷,來自于44個(gè)PS端的IO外設(shè)以及16個(gè)PL端的中斷。中間部分為GIC,也即中斷控制器,用于對(duì)中斷進(jìn)行使能、關(guān)閉、掩碼、設(shè)置優(yōu)先等。
SGI中斷(軟件產(chǎn)生中斷),共16個(gè)IRQ ID號(hào)
PPI中斷,CPU私有中斷,共5個(gè)IRQ ID號(hào)
SPI中斷部分,共60個(gè)IRQ ID號(hào)
接下來設(shè)置帶有中斷的GPIO
INT_MASK:中斷掩碼
INT_DIS: 中斷關(guān)閉
INT_EN: 中斷使能
INT_TYPE: 中斷類型,設(shè)置電平敏感還是邊沿敏感
INT_POLARITY:中斷極性,設(shè)置低電平或下降沿還是高電平或上升沿
INT_ANY: 邊沿觸發(fā)方式,需要INT_TYPE設(shè)置為邊沿敏感才能使用
GPIO初始化→設(shè)置按鍵和LED方向→設(shè)置產(chǎn)生中斷方式→設(shè)置中斷→打開中斷控制器→打開中斷異?!蜷_GPIO中斷→判斷KEY_FLAG值,是1,寫LED
GPIO_CONFIG =XGpioPs_LookupConfig(MIO_0_ID) ; Status =XGpioPs_CfgInitialize(&GPIO_PTR, GPIO_CONFIG, PIO_CONFIG->BaseAddr) ; //設(shè)置LED方向 XGpioPs_SetDirectionPin(&GPIO_PTR,0, GPIO_OUTPUT) ; XGpioPs_SetDirectionPin(&GPIO_PTR,13, GPIO_OUTPUT) ; //設(shè)置按鍵方向 XGpioPs_SetDirectionPin(&GPIO_PTR,PS_KEY1, GPIO_INPUT) ; XGpioPs_SetDirectionPin(&GPIO_PTR,PS_KEY2, GPIO_INPUT) ; //使能LED輸出 XGpioPs_SetOutputEnablePin(&GPIO_PTR,0, GPIO_OUTPUT) ; XGpioPs_SetOutputEnablePin(&GPIO_PTR,13, GPIO_OUTPUT) ; //設(shè)置中斷類型 0表示上升沿 XGpioPs_SetIntrTypePin(&GPIO_PTR,PS_KEY1, 0);//rising edge XGpioPs_SetIntrTypePin(&GPIO_PTR,PS_KEY2, 0);//rising edge //設(shè)置按鍵使能 XGpioPs_IntrEnablePin(&GPIO_PTR,PS_KEY1) ; XGpioPs_IntrEnablePin(&GPIO_PTR,PS_KEY2) ; //設(shè)置中斷 Status= IntrInitFuntion(&INTCInst, MIO_0_ID, &GPIO_PTR) ; //產(chǎn)生按鍵的GPIO while(1) { if (key_flag) { XGpioPs_WritePin(&GPIO_PTR,0, key_val) ; XGpioPs_WritePin(&GPIO_PTR,13, key_val) ; key_val= ~key_val ; key_flag= 0 ; } } 編輯:hfy
-
cpu
+關(guān)注
關(guān)注
68文章
10804瀏覽量
210829 -
MIO
+關(guān)注
關(guān)注
0文章
12瀏覽量
8147 -
Zynq
+關(guān)注
關(guān)注
9文章
607瀏覽量
47101
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論