zynq -使用中断

原文地址:http://xilinx.eetrend.com/article/5087


任何一个嵌入式系统级的设计都离不开中断,对于拥有双cotex-A9的Zynq来说也一样。Zynq的中断设计由ARM与GIC pl390中断控制器组成,
用于接收IOP(I/O peripherals)与PL的信号。如下图所示,CPU中的中断分为PPIs(private peripheral interrupts),
SGIs(software generated interrupts)与SPIs(shared peripheral interrupts)其中,通过写GIC(generic interrupt controller)的寄存器来产生SGIs。
从Xilinx给出的ug585手册中可以清晰的看出GIC与PPIs,SCIs,SPIs的关系。GIC可以管理从PS与PL部分产生的中断,并且对其使能,
优先级等作出设置,与普通ARM相同,所有的中断都会赋予一个中断ID,用作CPU的相应。


中断设置很简单,跟其他的单片机程序一样,主要有以下几部分

1,首先进行GPIO初始化,这个就不需要多说了。



2,其次进行中断的设置,如中断控制,全局中断允许等等,主要用了以下函数

XScuGic_LookupConfig //中断设置查找

XScuGic_CfgInitialize //GIC初始化

XScuGic_SetPriorityTriggerType //设置中断优先级及中断触发方式,笔者在这里有些疑问,手册上面说中断触发方式不可以更改这里为何有这个函数呢,还需要研究一下

XScuGic_Connect //设置中断服务程序入口地址

XScuGic_Enable //GIC允许




XGpio_InterruptGlobalEnable //GPIO全局中断允许

XGpio_InterruptEnable //相应GPIO中断允许




Xil_ExceptionInit// 异常处理函数

Xil_ExceptionRegisterHandler

Xil_ExceptionEnable

3,最后编写中断服务程序,在中断服务程序中需要先禁止中断使能,完成服务程序后再打开。



总结来看,由于SDK提供的库文件使得Zynq中断使用很方便简单,并且中断源很多,加上PS部分与PL部分的配合,使用非常灵活。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值