NIOS 的外部中断

  按照黑金的《NIOS 那些事儿》做到中断实验,编译时显示寄存器配置成功了,开始下到板子上灯是灭的,一阵狂按。。。还是不亮,在while(1)里面把LED->DATA 的赋值颠倒一下,再下载板子上亮的,又是一阵狂按。。。还是不灭,怎么?没进入中断?往后看有将怎么调试的,OK,调试看看,在 void ISR_button(void *context,unsigned long id)处设置断点,全速,按一下,好程序停在那里了,在全速,OK,灭了。反复几次。。。发现灯是一亮一灭的,看来不加按键消抖危害巨大啊。虽然有现象,但这个程序我没看懂,主要是 NIOS 处理中断的过程都没有理清楚。

  NIOS II 体系结构提供一个非常简单的非向量异常控制器来处理所有类型的异常。所有异常包括硬件中断,都引起处理器从异常地址开始执行程序。程序员可以在异常地址处判断异常产生的原因,并分配异常处理任务。异常地址在系统生成时指定。当跳转到异常处理地址后,处理器开始执行一段由 HAL 插入的代码,并判断中断源和中断优先级,然后再跳转到用户的中断服务子程序( ISR )中。即异常发生后,异常处理除 ISR 外的所有工作都由 HAL 系统库代码替用户完成。

  

posted on 2010-12-03 13:44  zxl2431  阅读(589)  评论(0编辑  收藏  举报

导航