前言:實現配置PI核並且點亮PS端LED,並打印信息
ZYNQ創建工程之後首先創建IP核,zynq processing system 由於功能簡單隻需要設置一下DDR存儲器和UART所配置的I/O引腳,uart的波特率在PS-PL configuartion中general中設置。然後在peripheral I/O pin 中勾選GPIO MIO即可。在配置完ZYNQ systemPI核之後,選擇run block automation。然後進行保存。在sources中設計上面右鍵選擇generate output products(生成的輸出產品)。
Create HDL wrapper (分裝) - 生成頂層文件
file中expore hardware 輸出計算機硬件
file中launch SDK
在SDK中進行MIO引腳的控制,在system.mss的ps7_gpio_0 gpiops documentation(文檔) 中找到需要配置I/O的模板,在import examples(導入 歷程) 中進行選擇。通過配置之後編寫出一下代碼:
/*
* main.c
*
* Created on: 2020年2月4日
* Author: ASUS
*/
#include "stdio.h"
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
//核心板PS_MIO0_LED
#define MIO_0_LED 0
XGpioPs_Config *ConfigPtr;
XGpioPs Gpio;
//typedef struct {
// XGpioPs_Config GpioConfig; /**< Device configuration */
// u32 IsReady; /**< Device is initialized and ready */
// XGpioPs_Handler Handler; /**< Status handlers for all banks */
// void *CallBackRef; /**< Callback ref for bank handlers */
// u32 Platform; /**< Platform data */
// u32 MaxPinNum; /**< Max pins in the GPIO device */
// u8 MaxBanks; /**< Max banks in a GPIO device */
//} XGpioPs;
int main()
{
printf("GPIO MIO test!\n\r");
//初始化GPIO驅動
//根據器件的ID,查找器件的配置信息
ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
//初始化GPIO驅動 baseaddr 基地址
XGpioPs_CfgInitialize(&Gpio, ConfigPtr,ConfigPtr->BaseAddr);
//設置GPIO的方向設置爲輸出(0爲輸出 / 1爲輸出) MIO0設置爲輸出
XGpioPs_SetDirectionPin(&Gpio, MIO_0_LED, 1);
//設置輸出使能
XGpioPs_SetOutputEnablePin(&Gpio, MIO_0_LED, 1);
//寫數據到GPIO的輸出引腳
XGpioPs_WritePin(&Gpio, MIO_0_LED, 0x0);
while(1)
{
XGpioPs_WritePin(&Gpio, MIO_0_LED, 0x1);
usleep(500000);//延時1s
XGpioPs_WritePin(&Gpio, MIO_0_LED, 0x0);
usleep(500000);//延時1s
}
return 0;
}
第一次發博客,如果有什麼問題請大家斧正
2020-02-06