定时器中断相关函数:
1、XScuTimer_Config *XScuTimer_LookupConfig(u16 DeviceId)
功能:查找输入设备ID的配置信息。
输入:设备ID。
输出:成功返回指向配置信息表格的指针,失败返回NULL。
2、s32 XScuTimer_CfgInitialize(XScuTimer *InstancePtr, XScuTimer_Config *ConfigPtr, u32 EffectiveAddress)
功能:初始化一个特定的定时器实例/驱动,该函数必须在实例被调用前使用。
参数1:定时器实例指针。
参数2:配置信息结构体指针。
参数3:设备地址。
返回:初始化成功返回XST_SUCCESS,若设备已经启动返回XST_DEVICE_IS_STARTED。
3、s32 XScuTimer_SelfTest(XScuTimer *InstancePtr)
功能:运行定时器自我检测程序,该测试清除定时器控制寄存器的使能位,然后向计数寄存器写值,然后读回检测是否正确。
输入:定时器实例。
输出:成功返回XST_SUCCESS,失败返回XST_FAILURE。
4、XScuTimer_LoadTimer(InstancePtr, Value)
功能:为定时器加载计数值。
参数1:定时器实例。
参数2:定时器计数值。
5、XScuTimer_EnableAutoReload(InstancePtr)
功能:使能计数值自动加载功能,即计数器减到0时自动重装计数值。
6、void XScuTimer_Start(XScuTimer *InstancePtr)
功能:启动定时器。
输入:定时器实例。
7、XScuGic_Config *XScuGic_LookupConfig(u16 DeviceId)
功能:查找输入设备ID的中断配置信息。
8、s32 XScuGic_CfgInitialize( XScuGic *InstancePtr,XScuGic_Config *ConfigPtr,u32 EffectiveAddr)
功能:初始化一个特定的中断控制实例,初始化包括1、初始化XScuGic结构体,2、初始化函数调用向量表,3、所有中断源使能关闭。
参数1:中断实例指针。
参数2:与该设备驱动关联的配置信息指针。
参数3:设备在虚拟地址空间中的基地址。
返回:成功返回XST_SUCCESS。
9、s32 XScuGic_Connect(XScuGic *InstancePtr, u32 Int_Id, Xil_InterruptHandler Handler, void *CallBackRef)
功能:将中断ID与中断处理函数连接起来。当中断被ID识别出来后执行相应的处理函数。
参数1:中断控制实例。
参数2:中断源ID(在0-XSCUGIC_MAX_NUM_INTR_INPUTS - 1之间)。
参数3:中断处理函数。
参数4:回调参考,通常为硬件驱动指针。
返回:连接成功返回XST_SUCCESS。
10、void XScuGic_Enable(XScuGic *InstancePtr, u32 Int_Id)
功能:使能输入中断ID的中断源。
参数1:通用中断控制寄存器实例。
参数2:中断源ID。
11、XScuTimer_EnableInterrupt(TimerInstancePtr);
功能:使能定时器中断。
12、Enable interrupts in the Processor
功能:使能处理器中断。
----------------------------------------------------------
中断整体配置流程:
1、定义定时器实例。
2、私有定时器初始化。
3、设置计数值,自动重载,启动定时器。
4、中断配置:
a、初始化通用中断控制寄存器
b、连接硬件
c、连接中断号与中断服务函数
d、使能GIC中定时器中断
e、使能定时器中断
f、使能处理器中断。