ZYNQ的gpio的硬件驱动库以及debug调试
对于ZYNQ的硬件驱动库编程方法,我这边用STM32的标准库函数方法来对应。
也就是说在ZYNQ里面有给定的官方的标准驱动库,将原本的寄存器方法给一定程度的封装起来。
类似于stm32学习过程中给的库函数版本,将你从寄存器版本中解救出来(虽然会影响运行效率,但是这种普通开发者可忽略不计)
像下面的调用GPIO的函数,就已经跟stm32的调用很相似了。代码的可读性比寄存器版本的上升了好多。
#include "xgpiops.h"
#include "unistd.h"
XGpioPs Gpio;
XGpioPs_Config *ConfigPtr;
int main(void)
{
//初始化GPIO驱动
ConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
XGpioPs_CfgInitialize(&Gpio, ConfigPtr, ConfigPtr->BaseAddr);
//设置引脚输入输出方向,0输入 1输出
XGpioPs_SetDirectionPin(&Gpio, 7, 1);
//使能输出引脚
XGpioPs_SetOutputEnablePin(&Gpio, 7, 1);
while(1)
{
//设置bit7输出1,设置引脚输出的值
XGpioPs_WritePin(&Gpio, 7, 0x1);
usleep(500000);
//设置bit7输出0
XGpioPs_WritePin(&Gpio, 7, 0x0);
usleep(1000000);
}
return 0;
}
不做深入寄存器研究的话,暂时会使用就行
对于以前的SDK里面的system.mss这边选择vitis的wrapper里面的platform.spr文件就可以找到官方给的例程文件了
debug调试部分,跟sdk区分开来,Debug分开来调试了
其他的都差不多,跟keil的调试很像,一步或者一个函数,然后可以通过增加全局量和修改全局量,以及查看寄存器值的变化等。
1000 0011
0000 0011
从0x83变为0x03的过程就是灯灭的过程。GPIO7变了
本文来自博客园,作者:祈愿树下,转载请注明原文链接:https://www.cnblogs.com/cjl520/p/18143343