利用Xilinx的XPS工具写的一个时钟
已有 260 次阅读 2010-08-16 18:09
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即可 |
发表评论 评论 (0 个评论)