网上看到一篇文章(编写你的第一个GPIO中断程序,Run your first gpio-ps interrupt application),这里把这篇文章简单记录一下。
如果要用ps侧gpio作为中断输入,基本步骤如下:
1.设置gpio引脚方向和中断检测逻辑;
2.Route gpio中断到scu gic模块;
3.Route scu gic到cpu exception table;
1.配置GPIO PS 模块
1.1 设置gpio引脚为输入引脚,disable掉输出使能开关;
首先初始化gpio ps模块
XGpioPs GpioPs;
xgpiops_config* pgpiopscfg;
pgpiopscfg=xgpiops_lookupconfig(xpar_xgpiops_0_device_id);
xgpiops_cfginitialize(&gpiops,pgpiopscfg,pgpiopscfg->baseaddr);
然后disable掉输出使能开关
xgpiops_setoutputenablepin(&gpiops,50,0x0); //0 to disable output
设置中断检测逻辑
xgpiops_setintrtypepin(&gpiops, 50, xgpiops_irq_edge_rising);
设置中断handler(包括创建一个中断handler,连接中断handler到gpio模块)