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变了

posted @ 2024-04-18 13:39  祈愿树下  阅读(30)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css