利用Xilinx的XPS工具写的一个时钟程序
1. GPIO外设的配置:
(1) 新建工程,添加duan ,wei ,Leds_8Bit三个GPio外设,并且将其与总线连接,设置地址和相应的长度。然后将添加的三个GPio端口在port下的GPio_d_out设置为make External,用来产生外部GPIO连接。
(2) 在Project下点击UCF文件,添加相应的三个GPio外设的端口。然后在ApplicaTIon下双击Compiler OpTIons,在Environment下选择Use Default Linker ,在Debug and OpTImizaTIon下选择No Optimization。
(3) 点击编译按钮,进行编译。
2. 定时器和中断的配置:
(1) 在IP Catalog下的DMA and Timer中双击添加XPS Timer/Counter定时器,在Clock,Reset and Interrupt下双击XPS Interrupt......,添加中断。将定时器的名字改为delay,并且与总线相连接。在地址下点击Generate Addresses,为其添加地址。
(2) 在port下输入timer1作为delay的interrupt连接Interrupt 下拉为 timer1。在microblaze_0下的INTERRUPT选择New Connection,创建一个新的网络。
(3) 在Irq下选择microblaze_0_INTERRUPT。单击Intr,将弹出的窗口中的timer1添加到右边的窗口。
(4) 将 delay 下的CaptureTrig0设置为net_gnd。
(5) 双击delay,在弹出的窗口中将Only One Timer is present选中。
(6) 最后在Application 下的Sources中右键添加写好的C文件。选择工具栏中Device Configuration下的Update,进行编译。编译完成后点击Download下载到EXCD-1板卡中。
3. 扩展功能:
按键控制时、分的加减。
(1) 首先添加按键的GPIO外设button,设置方法同第一步的方法相同。注意添加的时候不要忘了在system.ucf 中添加其对应的端口。
(2) 然后在C程序中添加相应的代码。定义全局变量Xuint32 DataRead; //读取按钮数
XGpio Push_Bottons_4Bit; //定义GPIO按钮
在初始化函数中添加按键初始化语句:
Status = XGpio_Initialize(&Push_Bottons_4Bit, XPAR_BUTTON_DEVICE_ID); //GPIO_BUTTONS_4BIT初始化
XGpio_SetDataDirection(&Push_Bottons_4Bit, 1, 0xFFFFFFFF); //设置为输入
添加按键扫描函数:
void keyscan()
{
DataRead = XGpio_DiscreteRead(&Push_Bottons_4Bit, 1);//读取按键信息
if(DataRead == 0x7) //第一个按键
{
XIntc_mMasterEnable(XPAR_XPS_INTC_0_BASEADDR);//关闭中断
XIntc_mEnableIntr(XPAR_XPS_INTC_0_BASEADDR, 0x0);
delay(400);
DataRead = XGpio_DiscreteRead(&Push_Bottons_4Bit, 1);//读取按键信息
if(DataRead != 0x7)
{
shi++;
if(shi==24)
shi=0;
XIntc_mMasterEnable(XPAR_XPS_INTC_0_BASEADDR);//再次打开中断
XIntc_mEnableIntr(XPAR_XPS_INTC_0_BASEADDR, 0x1);
}
}//此处仅仅只有一种扫描,若要增加按键,即多增加几个if即可
- zynq使用自带外设IP让ARM PS访问FPGA(八)(02-09)
- XPS中的时钟模块和复位模块(02-11)
- Xilinx Kintex UltraScale 一半尺寸的 PCI Express 平台 (HTG-K816)(06-15)
- Xilinx全新参考设计提供业界首个单芯片400G解决方案(02-12)
- Xilinx用于工业自动化的机器视觉解决方案(11-30)
- Xilinx多协议机器视觉摄像机参考设计(12-01)