您好,登錄后才能下訂單哦!
本篇內容主要講解“Zynq中斷可以分為幾部分”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Zynq中斷可以分為幾部分”吧!
Zynq中斷大致可分為三個部分
第一部分為SGI,軟件生成的中斷,共16個端口;
第二部分為PPI,CPU私有外設中斷,有5個;
第三部分為SPI,共享外設中斷,來自于44個PS端的IO外設以及16個PL端的中斷。中間部分為GIC,也即中斷控制器,用于對中斷進行使能、關閉、掩碼、設置優先等。
SGI中斷(軟件產生中斷),共16個IRQ ID號
PPI中斷,CPU私有中斷,共5個IRQ ID號
SPI中斷部分,共60個IRQ ID號
INT_DIS: 中斷關閉
INT_EN: 中斷使能
INT_TYPE: 中斷類型,設置電平敏感還是邊沿敏感
INT_POLARITY:中斷極性,設置低電平或下降沿還是高電平或上升沿
INT_ANY: 邊沿觸發方式,需要INT_TYPE設置為邊沿敏感才能使用
GPIO初始化à設置按鍵和LED方向à設置產生中斷方式à設置中斷à打開中斷控制器à打開中斷異常à打開GPIO中斷à判斷KEY_FLAG值,是1,寫LED
GPIO_CONFIG =XGpioPs_LookupConfig(MIO_0_ID) ;
Status =XGpioPs_CfgInitialize(&GPIO_PTR, GPIO_CONFIG, PIO_CONFIG->BaseAddr) ;
//設置LED方向
XGpioPs_SetDirectionPin(&GPIO_PTR,0, GPIO_OUTPUT) ;
XGpioPs_SetDirectionPin(&GPIO_PTR,13, GPIO_OUTPUT) ;
//設置按鍵方向
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) ;
//設置中斷類型 0表示上升沿
XGpioPs_SetIntrTypePin(&GPIO_PTR,PS_KEY1, 0);//rising edge
XGpioPs_SetIntrTypePin(&GPIO_PTR,PS_KEY2, 0);//rising edge
//設置按鍵使能
XGpioPs_IntrEnablePin(&GPIO_PTR,PS_KEY1) ;
XGpioPs_IntrEnablePin(&GPIO_PTR,PS_KEY2) ;
//設置中斷
Status= IntrInitFuntion(&INTCInst, MIO_0_ID, &GPIO_PTR) ;
//產生按鍵的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 ;
}
}
到此,相信大家對“Zynq中斷可以分為幾部分”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。