ZYNQ中斷實驗

2021-09-20 07:20:49 字數 1521 閱讀 7786

/*程式中編寫了 3 個函式,乙個是 main 主函式,乙個是中斷建立函式,另乙個是中斷呼叫

函式。首先在 main 函式中初始化定時器 timer,指定 timer 的裝置號為

xpar_xscutimer_0_device_id,此裝置號在 xparameters.h 的標頭檔案中定義了的。再設定定時器的初始設定值並啟動定時器,當定時器減為 0 的時候,會重新賦值這個初始設定值。再呼叫定時器中斷建立函式 setupinterruptsystem。在定時器中斷建立函式裡,主要是初始化中斷裝置,註冊定時器的中斷號,繫結定時器中斷呼叫函式和使能定時器中斷。當定時器計數到 0 時會產生定時器中斷。這時 cpu 會跳轉到在定時器中斷處理程式中,在處理程式中改變 sec 的值。相當於定時器發生一次中斷,sec 的數值就加 1, 再從串列埠資訊中打

印出來。*/

#include

#include"xadcps.h"

#include"xil_types.h"

#include"xscugic.h"

#include"xil_exception.h"

#include"xscutimer.h"

//timerinfo

#definetimer_device_id     xpar_xscutimer_0_device_id

#defineintc_device_id      xpar_scugic_single_device_id

#definetimer_irpt_intr     xpar_scutimer_intr

//#definetimer_load_value  0x0fffffff

#definetimer_load_value    0x13d92d3f

//staticxadcps  xadcmoninst;//xadc

staticxscugicintc;//gic

staticxscutimertimer;//timer

staticvoidsetupinterruptsystem(xscugic*gicinstanceptr,

        xscutimer*timerinstanceptr,u16timerintrid);

staticvoidtimerintrhandler(void*callbackref);

/*初始化定時器timer*/

intmain()

     return0;

}voidsetupinterruptsystem(xscugic*gicinstanceptr,

        xscutimer*timerinstanceptr,u16timerintrid)

staticvoidtimerintrhandler(void*callbackref)



zynq 的定時器中斷實驗

本文通過定時器中斷實驗,介紹zynq 的中斷和定時器的基本使用方法。本文是在helloworld 實驗的基礎上完成的,所以必須先完成了helloworld 的實驗。這個可以學習本部落格的helloworld 實驗,或者開發板提供的helloworld 實驗。1 中斷和定時器介紹 中斷對於保證任務的實...

zynq中斷入門

zynq的ps是基於arm架構,使用兩個arm cortex a9處理器和gic pl390中斷控制器。系統中斷框圖如下 interrupt controller 中斷控制器 框圖如下 中斷詳細分為sgi software generated interrupts 軟體中斷,ppi private ...

zynq中mgtx應用 ZYNQ中斷體系

arm中斷體系 01 arm體系中,在儲存位址的低位,固化了乙個32位元組的硬體中斷向量表。異常中斷發生時,程式計數器pc所指的位置不同,異常中斷就不同。中斷結束後,中斷不同,返回位址也不同。但是,對於系統復位中斷,不需要返回,因為整個應用系統就是從復位中斷中開始的。快速中斷請求 外部引腳的快速中斷...