nios pio interrupt 的使能
關(guān)于nios 中的中斷,因?yàn)橐?6c550中需要nios的中斷環(huán)境去測試,所以就用到了中斷。
硬件:在nios中添加硬件PIO,但是要使能中斷功能。如下圖所示:
?
系統(tǒng)列化,PIO的連接就不說了。但是要注意兩地方:edge type, IRQ type。
?
接下來就是軟件設(shè)計(jì):
使能相應(yīng)的中斷,IOWR_ALTERA_AVALON_PIO_IRQ_MASK(INTREP_BASE, 0xff);即相對應(yīng)的MASK函數(shù)每一位1位使能。
清中斷標(biāo)志位:IOWR_ALTERA_AVALON_PIO_EDGE_CAP(INTREP_BASE, 0xff);
(注:在此時(shí)是0x00 還是 0xff清除中斷標(biāo)志,?enable bit-clearing for edge capture register的選項(xiàng)。在此我是使能了,即0xff清除標(biāo)志位。反則,0x00清除中斷標(biāo)志位)
中斷注冊函數(shù):
alt_ic_isr_register(INTREP_IRQ_INTERRUPT_CONTROLLER_ID,?//定義在system.h中
INTREP_IRQ, ? ?//定義在system.h中
intrp_isr, ? ?//中斷服務(wù)子函數(shù)
isr_context, ? ?//空指針 ? void * isr_context
0x0 //保留位,但是要寫
);
?
對應(yīng)中斷服務(wù)子函數(shù):
void intrp_isr(void) {
printf("have enter the isr \n");
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(INTREP_BASE, 0xff) ; //清標(biāo)志位
(注:在此時(shí)是0x00 還是 0xff清除中斷標(biāo)志,?enable bit-clearing for edge capture register的選項(xiàng)。在此我是使能了,即0xff清除標(biāo)志位。反則,0x00清除中斷標(biāo)志位)
。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。
}
?
到此軟硬件,設(shè)計(jì)完畢。只要對應(yīng)的PIO,發(fā)生中斷的條件,在nios 中就會響應(yīng)中斷,進(jìn)入中斷服務(wù)子函數(shù)。
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/cornhill/p/3720943.html
總結(jié)
以上是生活随笔為你收集整理的nios pio interrupt 的使能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不育治疗费用
- 下一篇: 2013 南京邀请赛 A play th