ZYNQ的gpio的硬體驅動庫知識

祈愿树下發表於2024-04-18

對於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;
}

不做深入暫存器研究的話,暫時會使用就行

相關文章