




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Siga-S16 开发板之定时器中断实验Siga-S16 FPGA 开发板之定时器中断实验Rev. 1.00Rev1.00S1Siga-S16 开发板之定时器中断实验版本Rev1.00S2版本时间作者描述Rev0.012011-6-20LuoFirst Version ReleaseSiga-S16 开发板之定时器中断实验通过本篇,您可以了解到如何在 MicorBlaze 系统中使用定时器,如何产生中断及中断处理 ,以及 API 函数的使用和 SDK调试的一些和技巧。本文档分为以下几个部分:一、简介二、硬件开发三、开发Rev1.00S
2、3Siga-S16 开发板之定时器中断实验一、 简介开始定时器中断实验之前我们先来了解什么是定时器,什么是定时器中断,什么是中断处理程序,什么是中断优先级。定时器则是由硬件系统提供的一个非常的计数源。它是由主时钟分频后获得的一个脉冲源来计数。定时器可以由指令来改变其工作方式、定时时间、量程、启动方式等。当定时器开始计数并达到最大值(正计数)或为零(负计数)时,就会产生溢出。当定时器/ 计数器计溢出时,就会使得相关的寄存器标志产生变化,CPU由此而产生定时中断,如果定时中断使能,跳转到中断服务处理需要完成的任务。为使系统响应并处理发生的所有中断,系统根据引起中断的重要性和紧迫程度,硬件将中断源分
3、为若干个级别,称作中断优先级。本实验以定时器中断为例,为大家在MicroBlaze系统中如何使用定时器及定时器中断处理的硬件开发和开发。二、硬件开发要进行定时器的中断,我们需要在MicroBlaze硬件系统中添加一个定时器和一个中断器,这部分我们已经在EDK建立MicroBlaze硬件系统的时候就添加了,如下图红圈所示的中断器Interrupt和定时器Timer0:如果你的MicroBlaze的系统中还没有添加这两个器。中断器双击下图中的IP CatalogRev1.00S4Siga-S16 开发板之定时器中断实验界面中XPS Interrupt Controller添加,
4、定时器双击下图中的XPS Timer/Counter添加。再对定时器的进行配置,在案User配置页面中,设置Only One Timer is present保持默认值不变。如下图所示:为Enable,其它接下来是中断器的配置,设置Irq信号为内部中断信号Interrupt_Irq,再把此信号作为MicroBlaze_0处理器的中断输入,使得MicroBlaze_0能够响应中断如下图红圈处:器产生的中断。设置后Rev1.00S5Siga-S16 开发板之定时器中断实验接下去我们可以在中断器中设置中断优先级。单击下图红圈处。在弹出的框中, 右边部分为已经连接到系统的中断,定时
5、器Timer0中断和Audio_IIC中断已经在右边的中断连接列表中。如下所示:其中Audio IIC中断优先级比Timer0的中断优先级要高。用户可以根据需要点击右边的按钮来重新排列中断的优先级。Rev1.00S6Siga-S16 开发板之定时器中断实验配置已经完成后,需要保存工程,并重新对MicroBlaze系统进行编译和生成Bitstream文件:Hardware->Generate Bitstream.更新后的Bitstream文件到FPGA:Device Configuration -> Download Bitstream.再重新Export Har
6、dware design to SDK。Rev1.00S7Siga-S16 开发板之定时器中断实验接下去就要进入SDK的中断的开发和调试阶段了。三、开发为定时器中断的测试新建一个工程:FileNewXilinxC Project在工程向导界面输入项目名称 hello_timer_int,再选择 hello_world 工程模版。Rev1.00S8Siga-S16 开发板之定时器中断实验选择TargetanexistingBoardSupportPackage,如下图的红色圈圈部分。点击Finish,完成工程向导。Rev1.00S9Si
7、ga-S16 开发板之定时器中断实验回到SDK开发环境后在工程窗口会出现hello_timer_int的工程目录:hello_timer_int的工程已经建好了,接下去我们来编写定时器中断的测试程序。Rev1.00S10Siga-S16 开发板之定时器中断实验首先我们先修改一些代码文件helloworld.c的名字,把它重命名为hello_timer_int.c。先一下我们这次定时器中断实验的内容。首先在设置和触发定时器,定时器开始计数,当定时到设定值溢出并产生定时器中断。这时CPU会跳转到在定时器中断处理,在处理改变全局变量count的值。相当于定时器发生一次中断,cou
8、nt的数值就加1。 Count的数值会反映在开发板上的四个LED灯状态上。接下来,我们来修改hello_timer_int.c的程序,在已经添加了中文说明,大家能够很容易了解每部分程序的功能。修改程序如下图所示:Rev1.00S11Siga-S16 开发板之定时器中断实验首先来说明红框1的代码,这里调用了MicroBlaze系统的头文件,这些头文件中定义了我们在使用到的API函数,我们就是通过调用这些API函数来设置或定时器,中断器和GPIO器。另外还定义了两个全局的变量GpioOutput和counter供程序使用。红框2的代码为定时器的中断服务程序。MicroBlaze
9、如果有检测到定时器中断,自动跳入到此中断服务程序执行。在中断服务 话Count加1并清除Timer0的中断标志位。,先检查是否是Timer0产生了中断,是的红框3的代码是Main函数。完成中断器的初始化,定时器的初始化和GPIO的的初始化。再进入While的循环把count的数值反映到led的显示上。关于代码部分,因为每一部分都有中文解释,我们在这里不做具体义可以查看siga_bsp目录下include文件夹里的头文件。相关的API函数的定程序修改完成后我们来Debug或运行一下确认效果了,运行之前先保存工程,SDK会自动编译一Rev1.00S12Siga-S16 开发板之定时器中断实验遍。没有问题我们就开始运行程序:点击菜单Run Run As 1 Launch on Hardware。如果你的开发板已经连接了器而且在EDK中已经了Bitstream文件,你就能看到开发板上的四个LED灯每隔一定时间变化。四个LED灯的状态就是Count的数值。如果你想让LED灯的变化更快一些,只要改变Timer0的初始值。因为定时器是配置成减数模式, 所以初始值越小,LED灯变化越快,初始值越大,LED灯变化越慢。到此为止,定时器中断的实验就讲完了。定时器的中断是学习中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年的汽车租赁合同样本
- 农田水渠施工合同标准文本
- 2025智能物流系统项目软件开发合同
- 仪表工聘用合同样本
- 保险中标合同标准文本
- 隧道若爆破方案范本
- 2025年农产品买卖的合同范本
- 专业工程建设合同样本
- 公寓家电清洗合同标准文本
- 2025工业废弃土地租赁合同
- 湖北省武汉市2024-2025学年高三2月调研考试英语试题含答案
- 高速公路修补合同协议
- 航空业劳动力安全保障措施
- 《OCR技术及其应用》课件
- 2025年内科主治医师考试消化内科
- 房地产经纪人职业规划
- GB/T 18912-2024光伏组件盐雾腐蚀试验
- 对外投资合作国别(地区)指南 -墨西哥-20250102-00593
- 《演讲要素》课件
- 火车站反恐防暴培训内容
- 科研诚信与学术规范第六讲课件
评论
0/150
提交评论