版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、“SOPC技术综合设计实践”实验报告实验题号 : 实验五项目名称 :PIO外部中断实验系班 : 计科师范系11(1)学号 : 姓名 : 实验日期 : 2014年4月2日指导老师 :一、 实验目的(1)熟悉中断服务程序的编写和注册方法。(2)熟悉程序的调试方法,重点熟悉中断服务程序的调试方法。(3)熟悉NiosII处理外部中断的方法。二、实验内容1.外部中断信号由按键提供,然后将中断事件反映到对应的LED。2.利用边沿捕获寄存器读取按键值,编写中断服务程序将读到的键值输出到LED。即:按键F1按下,对应的LED0点亮。三、实验原理当跳转到异常处理地址后,处理器开始执行一段由HAL插入的代码,判断
2、中断源和中断优先级,然后再转跳到用户的中断服务子程序(ISR)中。即发生异常后,异常处理除ISR外的所有工作都由HAL系统库代码替换用户完成。为了将中断服务子程序的信息告知HAL,用户需要完成ISR的登记工作。向HAL登记ISR的工作可以分为以下两步:(1)编写void isr_name(void *context,alt_u32 id)函数(2)调用alt_irq_register(alt_u32 id,void *context,void(*isr)(void*,alt_u32)函数,向HAL登记ISR。四、SOPC的整个设计流程(附:截取主要的设计图)1. 基于实验3硬件系统(注意:将b
3、utton_pio改为8位, input),修改后,重新generate。2.进行引脚绑定设计端口芯片引脚开发平台模块设计端口芯片引脚开发平台模块clk_inPIN_B13时钟button_pio0PIN_Y11F1led_pio0PIN_AC10LED0button_pio1PIN_AA10F2led_pio1PIN_W11LED1button_pio2PIN_AB10F3led_pio2PIN_W12LED2button_pio3PIN_AE6F4led_pio7PIN_AA11LED3button_pio4PIN_V22F5led_pio3PIN_AE8LED4button_pio5PI
4、N_AF23F6led_pio4PIN_AF8LED5button_pio6PIN_AE23F7led_pio5PIN_AE7LED6button_pio7PIN_AC22F8led_pio6PIN_AF7LED73.编译后,下载.SOF文件4.在IDE平台上,新建一个.C文件,写入程序#include <stdio.h>#include "system.h"#include "altera_avalon_pio_regs.h"#include "alt_types.h"#include "sys/alt_irq
5、.h"#include "priv/alt_busy_sleep.h"#define LEDCON 0xff / #define KEYCON 0xff / alt_u32 done = 0; / 信号量:通知外部中断事件发生/* 功 能:键按下事件中断服务子程序,当键按下时,通过done标志* 告知外界*/static void KeyDown_interrupts(void* context, alt_u32 id) /* 清中断捕获寄存器 */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0); /* 通
6、知外部有中断事件发生 */ done+;/* 功 能:初始化LED_PIO为输出,KEY为输入,开中断,清边沿捕获寄存器*/void InitPIO(void) /* 初始化LED_PIO为输出,KEY为输入 */ IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_BASE, LEDCON); IOWR_ALTERA_AVALON_PIO_DIRECTION(BUTTON_PIO_BASE, 0x00); IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE, 0xff);/* 开KEY的中断 */ /*请同学们自己完成*/ I
7、OWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0x00); /* 清边沿捕获寄存器 */ alt_irq_register(BUTTON_PIO_IRQ,NULL,KeyDown_interrupts); /* 注册中断服务子程序 */ /*请同学们自己完成*/* 功 能:等待按键中断,并输出控制相应的LED。*/int main(void) volatile alt_u32 key_state,old_state,new_state;old_state = 0xff;/* 将old_state值写入LED_PIO, 初始化LED全亮*/ /*
8、请同学们自己完成*/IOWR(PIO_BASE,0,old_state); InitPIO(); while(1) if(0 != done) /* 中断事件数量减1 */ done-; alt_busy_sleep(5000); /延时5ms key_state = IORD_ALTERA_AVALON_PIO_DATA(BUTTON_PIO_BASE)&KEYCON; if(key_state = 0xff) /如果是由短暂脉冲引起的中断则忽略 continue; new_state = (old_state key_state); / 按键按下时对应的LED取反 old_stat
9、e = new_state; / 保存LED的状态 IOWR(PIO_BASE,0,new_state); /* 将new_state值写入LED_PIO */ /*请同学们自己完成*/ return(0);5. 生成工程后,RUN后出现结果。实验二1.硬件系统不变,在IDE平台上,新建一个.C文件,写入程序2. 生成工程后,RUN后出现结果。五、实验结果第一个实验成功发现按下对应的开关时对应个数的灯亮。第二个实验不同按键可以点亮不同的灯。六思考题:1. 什么是HAL?HAL,即Hardware Abstraction Layer,硬件抽象层。位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。2. 简述HAL中断服务程序的编写和注册方法;编写ISR函数void isr(void*context,alt_u32id)即中断上下文指针及中断号。注册函数int alt_irq_register(alt_u32id ,void*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江金华市东阳市殡仪馆招聘编外人员1人笔试参考题库及答案详解
- 2026云南普洱孟连县人民医院招聘同工同酬编外合同制医生13人笔试备考试题及答案详解
- 2026蒙铁特钢(内蒙古)有限公司招聘人事行政专员1人笔试备考题库及答案详解
- 11-16172025大型公共建筑制冷能耗限额
- 2026陕西西安高新区第二十三小学面向社会招聘17人笔试备考试题及答案详解
- 2026广东深圳市龙岗区耳鼻咽喉医院招聘37人笔试模拟试题及答案详解
- 2025年大同银行人员招聘笔试考试试题及答案详解
- 2026华电抽蓄工程管理(成都)有限公司校园招聘(第三批)笔试模拟试题及答案详解
- 2026四川乐山市沐川县舟坝镇花山湾社区招募高校毕业生(青年)见习人员2人笔试备考题库及答案详解
- 2026贵州开放大学(贵州职业技术学院)科研助理20人选聘笔试备考题库及答案详解
- 经典导读与欣赏智慧树知到期末考试答案2024年
- 如何阐述自己的观点 高中语文统编版必修下册第一单元写作课课件
- 农村环保培训课件讲解
- 人工智能原理与方法智慧树知到课后章节答案2023年下哈尔滨工程大学
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验
- 走进舞蹈艺术-首都师范大学中国大学mooc课后章节答案期末考试题库2023年
- 小型挖掘机工况介绍
- 饲料原料知识和品控
- GB/T 7582-2004声学听阈与年龄关系的统计分布
- GB/T 4937.3-2012半导体器件机械和气候试验方法第3部分:外部目检
- GB/T 37356-2019色漆和清漆涂层目视评定的光照条件和方法
评论
0/150
提交评论