您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 华科_HUST_微机原理_并行IO接口实验_独立式开关输入_实验报告
微机原理实验报告学号姓名专业通信1301指导教师罗杰院(系、所)电信学院并行I/O接口实验一、实验目的1、掌握GPIOIP核的工作原理和使用方法。2、掌握IO接口程序控制方法1)查询方式2)中断方式3)延时方式3、掌握中断控制方式的IO接口设计原理4、掌握中断程序设计方法二、实验任务使用查询、中断两个方式做独立式开关输入,将开关状态显示到console。三、硬件电路框图四、硬件平台建立1创建XPS工程创建basesystem文件夹,建立最小系统。启动XPS,打开system.xmp工程文件。2添加和配置GPIOIP核在XPS主界面左边窗口选择IPCataiong标签,点击GeneralPurposeI/O展开。添加AXIGenaralPurposeI/O。配置开关与led灯分别有16个,将其分别设置为16在ucf文件中添加相应代码3、添加和配置中断控制器IP核在XPS主界面左边窗口选择Clock,ResetandInterrupt标签,点击AXIInterruptController展开。将INTERRUPT引脚选择axi_intc.c_INTERRUPT。设置中断输入4、产生外部GPIO链接SW为开关输入,从GPIO_IO接口接入,LED灯输出,从GPIO2_IO接口接入展开ExternalPorts项可看到SW与LED的外部接口五、软件平台建立1.查询源代码#includestdio.h#includexil_io.h#includexil_types.h#definegpio_ctrl0x40000004//定义通道1地址#definegpio_data0x40000000//定义数据1地址#definegpio1_ctrl0x4000000c//定义通道2地址#definegpio1_data0x40000008//定义数据2地址intmain(void){u16SW,psw;//定义两个输入,psw作比较信号Xil_Out16(gpio_ctrl,0xffff);//输入Xil_Out16(gpio1_ctrl,0x0);//输出psw=SW=0x00;//赋初值0给两个输入信号while(1){SW=Xil_In16(gpio1_data);Xil_Out16(gpio1_data,SW);if(psw!=SW)//判断SW与PSW是否相等{psw=SW;SW=Xil_In16(gpio1_data);xil_printf(theSwitchstateis0x%X\n\r,SW);//显示开关状态}}return0;}状态显示:实验流程图:2中断源代码:#includexgpio.h#includexparameters.h#includexintc.h#includestdio.h#includexil_io.hXGpioswled;XIntcintc;//实例化intcintswstate;intpshdip;voidInitialize();voidGPIOHandler(void*CallBackRef);intmain(){Initialize();while(1){if(pshdip){xil_printf(theSwitchstateis0x%x\n\r,swstate);pshdip=0;}}return0;}voidInitialize(){XGpio_Initialize(&swled,XPAR_AXI_GPIO_0_DEVICE_ID);XGpio_SetDataDirection(&swled,1,0xffff);XGpio_SetDataDirection(&swled,2,0x0);XGpio_InterruptEnable(&swled,1);XGpio_InterruptGlobalEnable(&swled);//XGpio_InterruptClear(&swled,1);XIntc_Initialize(&intc,XPAR_AXI_INTC_0_DEVICE_ID);XIntc_Connect(&intc,XPAR_AXI_INTC_0_AXI_GPIO_0_IP2INTC_IRPT_INTR,(XInterruptHandler)GPIOHandler,(void*)&swled);XIntc_Enable(&intc,XPAR_AXI_INTC_0_AXI_GPIO_0_IP2INTC_IRPT_INTR);microblaze_enable_interrupts();microblaze_register_handler((XInterruptHandler)XIntc_InterruptHandler,(void*)&intc);XIntc_Start(&intc,XIN_REAL_MODE);}voidGPIOHandler(void*CallBackRef){swstate=XGpio_DiscreteRead(&swled,1);pshdip=1;XGpio_DiscreteWrite(&swled,2,swstate);XGpio_InterruptClear(&swled,1);状态显示:}实验流程图:六、实验小结在这个实验的过程中,令我觉得最困难的不是硬件部分的理解和搭建,而是软件部分代码的理解,由于代码中利用到了中断,所以对中断状态的理解和使用上面遇到了一些问题。通过与同学交流,和看书上的相关内容,最后我也把代码理解了,这样就很好地把整个实验的过程都理解了。总的来说,本次实验做得还比较轻松,原理方面容易掌握,操作方面也容易实验。希望综合项目的实验也一样顺利。
本文标题:华科_HUST_微机原理_并行IO接口实验_独立式开关输入_实验报告
链接地址:https://www.777doc.com/doc-2592197 .html