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
的第三个参数设置为定时器的控制设备实例的指针,在调用中断状态清除函数时会用到该参数。实例参考
搬运米联客文章中的案例,完成私有定时器计秒。