對於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;
}
不做深入暫存器研究的話,暫時會使用就行