Zynq ps端ARM核 GPIO中断-MIO(vitis unified ide 2023.2)

在2023.2版本中AMD取消了DEVICE ID的概念,并且全面转向了BASEADDR,之前的例程可能就不能用了。

新的UnifiedIDE中,对于GPIO中断的开启是以下的步骤。

1.配置GPIO并初始化

static XGpioPs Gpio;

XGpioPs_Config *ConfigPtr;

ConfigPtr = XGpioPs_LookupConfig(BaseAddress);

XGpioPs_CfgInitialize(Gpio,ConfigPtr,ConfigPtr->BaseAddr);

2.配置中断

XGpioPs_SetIntrType(Gpio,GPIO_BANK,IntrType,IntrPolarity,IntrOnAny);

//其中第一个参数Gpio就是我们上面配置的GPIO外设

//第二个参数GPIO_BANK是我们所用的GPIO所在的BANK

//第三个参数IntrType是中断类型 0的话中断就是检测电平 1的话就是检测边沿

//第四个参数IntrPolarity是中断极性,0为检测低电平或下降沿,1为检测高电平或上升沿,注意这里检测电平或边沿是靠IntrType来设置好的

//第五个参数是设置单边沿触发还是两个边沿都触发中断

XGpioPs_SetCallbackHandler(Gpio,(void *)Gpio,IntrHandler);

//这一步设置中断回调函数IntrHandler

XGpioPs_IntrEnable(Gpio,GPIO_BANK,(1 << 11));

//这一步设置开启哪个引脚的中断,像我这里就是开启了GPIO11,最后的这个参数是二进制的哪个位是1,就开启哪里的GPIO,如果是0,就保持之前的状态不动

XSetupInterruptSystem(Gpio,&XGpioPs_IntrHandler,

                            ConfigPtr->IntrId,

                            ConfigPtr->IntrParent,

                            XINTERRUPT_DEFAULT_PRIORITY);

//这一步开启整个的中断系统

//下面需要对应配置中断回调函数

static void IntrHandler(void *CallBackRef, u32 Bank, u32 Status)

{

}

这样GPIO中断的配置就完成了,但是要注意Zynq的ARM核中所有的GPIO只有一个中断线,所以无论是哪一路GPIO进来的中断都会触发这个中断回调,需要在内部写引脚判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值