type
status
date
slug
summary
tags
category
icon
password
comment_flag
SLUGS
参考文章:

初始化私有定时器设备实例

通过设备ID查找设备配置 DeviceId,设备ID 返回XScuTimer_Config型指针,指向配置表中对应设备ID的配置,若未查找到相应设备返回NULL。
初始化指定的定时器设备。 InstancePtr,指向XScuTimer的一个实例。 ConfigPtr,指向定时器实例的配置信息结构体 EffectiveAddress,设备的起始地址。 返回初始化的结果状态,初始化成功为XST_SUCCESS或者已被使用XST_DEVICE_IS_STARTED
加载定时器的计数器中的值,其本质上只是操作Timer Load寄存器。 InstancePtr,指向XScuTimer的一个实例。 Value,计数的预加载值。 私有定时器是从装载值递减到0时发出中断。私有定时器的工作时钟为333MHz,每1/333M秒减1。因此若想定时1s,则装载值为1/(1/333M)-1,
允许指定定时器设备实例能自动重载。

设置定时器中断

中断时基本过程:初始化中断控制器、设置中断异常、连接中断、使能中断。

1.初始化GIC中断控制器;

通过设备id查找设备的配置 DeviceID,设备ID的唯一标识符。 返回XScuGic_Config *型指针,指向指定设备的配置信息结构体中。
对指定的中断控制器实例进行初始化。 InstancePtr是指向XScuGic实例的指针。 ConfigPtr是指向所关联的特定设备的配置表的指针。 EffectiveAddr是所关联设备的有效地址。

2.设置中断异常

异常处理,在Coretex-A9中不做任何事,因为异常处理已被静态初始化。
为特定的异常注册一个handler,当处理器发生特定异常后调用对应handler。 Exception_id异常源的id。 Handler是异常处理函数。 Data是异常发生时,传给对应handler的参数。
允许中断的异常处理。

3.绑定中断服务函数

将指定中断服务函数绑定到指定中断号上。 InstancePtr是指向XScuGic实例的指针。 Int_Id是中断源的中断号。 Handler是中断处理函数。 CallBackRef是回调的一个引用,一般是所连接的设备的指针。

4.使能中断

中断使能,在该函数调用后,可使对应id的pending的中断能够发生。 InstancePtr是指向XScuGic实例的指针。 Int_Id是中断源的中断号。
允许定时器中断。 InstancePtr是指向私有定时器设备实例的指针。

启动私有定时器

启动定时器。 InstancePtr是指向私有定时器设备实例的指针。
清除中断状态。 InstancePtr是指向私有定时器设备实例的指针。
在定时器中断处理程序中,我们必须清除中断标志,因此XscuGic_Connect的第三个参数设置为定时器的控制设备实例的指针,在调用中断状态清除函数时会用到该参数。

实例参考

搬运米联客文章中的案例,完成私有定时器计秒。
Zynq7000软件中断SGI使用摘要Zynq7000三种GPIO的使用之点亮流水灯摘要
Loading...