NIOSII的开发全流程串口实验(6).pdf

NIOSII的开发全流程串口实验(6).pdf

ID:52778613

大小:1.19 MB

页数:13页

时间:2020-03-30

NIOSII的开发全流程串口实验(6).pdf_第1页
NIOSII的开发全流程串口实验(6).pdf_第2页
NIOSII的开发全流程串口实验(6).pdf_第3页
NIOSII的开发全流程串口实验(6).pdf_第4页
NIOSII的开发全流程串口实验(6).pdf_第5页
资源描述:

《NIOSII的开发全流程串口实验(6).pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这一节,我们通过来讲解一下NIOSII的硬件中断的内容,同时借助这节内容我们也要介绍NIOSIIIDE在线调试的方法和技巧。首先来点理论知识,介绍一下与硬件中断相关的内容,让大家对NIOSII的硬件中断有一个概括性的了解。ISR(InterruptServiceRoutine)中断服务函数是为硬件中断服务的子程序。NIOSII处理器支持32个硬件中断,每一个使能了的硬件中断都应该有一个ISR与之对应。中断发生时,硬件中断处理器会根据检测到的有效中断级别,调用相应的ISR为其进行中断服务。要完成硬件中断工作,我们需要做两件事:第一,注册中断函数ISR,它的函数原型

2、如下所示:intalt_irq_register(alt_u32id,void*context,void(*handler)(void*,alt_u32));id:中断优先级,即所注册的ISR是为哪个中断优先级的中断服务的。中断优先级在SOPCBuilder中分配的,在第一节中我们提起过,不知道大家是否记得,我们来回忆一下,如下图所示,通过这一步我们来完成中断的自动分配分配好的IRQ如下图所示,当然,IRQ可根据自己的特殊要求进行手工修改,只要不重复就没问题。而在NIOSIIIDE软件中体现在system.h文件中,之前我们也提到过,如下图所示,看到了吧,JTA

3、G_UART_IRQ为0,与上图的中断号正好相同,这可不是巧合。我已经说过了,system.h文件是根据软核来生成的,所以JTAG_UART_IRQ等于0也是可想而知的了。接下来我们继续说剩下两个参数,context,为所注册的ISR传递参数,可以是NULL;handler,中断服务函数ISR的指针。再来说返回值,返回值是0时,表示中断注册成功;返回为负数,表明中断注册失败。这里面有一个需要注册的地方,如果handler不是NULL,则该优先级中断在注册成功后将自动使能,也即是说,只要我们在handler处有相应的ISR,我们就不需要再进行使能处理了。说完第一,

4、我们来说说第二。第二,编写ISR函数,这个函数有我们自己来写,而不是HAL系统提供的。它跟一般的函数定义没什么区别,只是对ISR的函数原型有特定的要求:voidISR_handler(void*context,alt_u32id);context:传给ISR的形参,可以是NULL;id:中断优先级。OK,只要这两步我们就可以完成中断函数的处理了。废话少说,我们来点实际的吧,跟我来。硬件开发下面,我们就利用一个外部按键来验证一下中断函数的处理过程。首先,我们要构造一个给外部按键用的PIO模块。这部分内容之前已经详细的讲过了,在此简述略过吧。打开QuartusII软

5、件,然后双击KERNEL,进入SOPCBUILDER。进入后,我们建立一个PIO模块,在建立过程中有一个地方有所不同,我们来看一下,如下图所示,红圈1处,我们输入1,因为我们只需要一个按键(我们的黑金开发板中一共有5个按键);红圈2处选择Inputportsonly,也就是作为输入。完成后,点击Next,点击后,如下图所示,我们将红圈2(GeneralIRQ)处选中,其他不变。在这多说两句,这里的中断分为两种,一种是电平(Level)中断,也就是高电平/低电平中断,还有一种就是沿中断,包括上升沿、下降沿。做过单片机的人应该都很熟悉,如果你想要实现沿中断,需要把红

6、圈1(Synchronouslycapture)处选中,下面包括3种方式,大家可以根据自己的要求选择。完成上面工作以后,点击Finish,完成PIO构建。下面需要对名字需要进行修改,我将其命名为KEY,如下图红圈1处所示。大家再看一下红圈2处,大家可以发现中断号有两个0,一个是jtag_uart的,一个是我们新建立的KEY的,这回大家明白了,为什么我们需要自动分配中断号了吧,出现了相同的中断优先级了。接下来,我们就对中断自动分配一下。如下图所示,大家可以看到红圈2处发生变化了吧,KEY的中断级别变化了,变成了1。自动中断分配是自上由下按顺序分配的。完成上面的构建

7、以后开始编译了,又需要漫长的等待了……(其实也不是很长,也就一两分钟吧,根据电脑配置而定)编译好了以后,回到Quartus界面,需要进行整理,添加KEY的输入管脚,我这里就简要略过了。看一下整好要以后的样子,如下图所示,我我将其命名为KEY[4],这个对应的是我的黑金开发板的中间的那个按键。下图中有一个地方需要注意,由于电平中断时,NIOS只对高电平敏感,所以如果想实现低电平敏感需要加一个非门,非门的加入方式跟加入input管脚是一样的,双击空白处出现下图,然后在红圈处输入not,点击OK即可。然后,分配引脚,编译,又是等待……编译好以后,咱们再来看看用了多少资

8、源,如下图所示,还是66

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。