Zynq中斷大致可分為三個部分
第一部分為SGI,軟件生成的中斷,共16個端口;
第三部分為SPI,共享外設(shè)中斷,來自于44個PS端的IO外設(shè)以及16個PL端的中斷。中間部分為GIC,也即中斷控制器,用于對中斷進行使能、關(guān)閉、掩碼、設(shè)置優(yōu)先等。
SGI中斷(軟件產(chǎn)生中斷),共16個IRQ ID號
PPI中斷,CPU私有中斷,共5個IRQ ID號
SPI中斷部分,共60個IRQ ID號
接下來設(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文章
11187瀏覽量
221309 -
MIO
+關(guān)注
關(guān)注
0文章
12瀏覽量
8311 -
Zynq
+關(guān)注
關(guān)注
10文章
623瀏覽量
48932
發(fā)布評論請先 登錄
如何檢測三極管的三個極
Linux系統(tǒng)中最重要的三個命令
DAC7714總是在程序的最后一個通道才可以驅(qū)動,程序的前三個通道無法獲得正確的電壓,為什么?
請問ads8556使用三個串口通訊時DSP模塊怎么配置?
ZYNQ基礎(chǔ)---AXI DMA使用

使用ADS1256中的三個通道作定時采集遇到的疑問求解
使用ZYNQ驅(qū)動評估板的子板搭建一個簡單采集系統(tǒng)遇到的幾個問題求解
在4片ADS127L11使用菊花鏈方式連接時,DRDY,START,RESET,每一個片子的這三個管腳怎么接?
動態(tài)無功補償?shù)?b class='flag-5'>三個必要條件

評論