[转载]Microblaze中断

标签:
转载 |
分类: FPGA开发 |
一.硬件配置
(1)添加IP核
(2)分配地址
(3)连线
二.软件编写
(1)timer的处理:载入计数值->设置运行选项(向上向下计数,使能中断,自加载计数值等)->使能,开始运行
(2)interupt的处理:使能microblaze中断->在XPS_INTC注册中断服务函数->使能XPS_INTC中断->使能timer在XPS_INTC里的中断
(3)程序架构:
#include
"xparameters.h"
#include "xintc.h" //中断子函数头文件
#include "xtmrctr.h" //定时器子函数头文件
void
int main(void)
{
XIntc_RegisterHandler(XPAR_XPS_INTC_0_BASEADDR,
XIntc_mEnableIntr(XPAR_XPS_INTC_0_BASEADDR,XPAR_XPS_TIMER_0_INTERRUPT_MASK);
}
//中断处理程序:
void
{
}
例子:
void InterruptHandler(void);
int main(void)
{
microblaze_register_handler((XInterruptHandler)InterruptHandler,
(void*)0);
#ifdef DEBUG
print("* Registered Interrupt Handler *nr");
#endif
microblaze_enable_interrupts();
// Something useful here.
return 0;
}
void InterruptHandler(void)
{
#ifdef DEBUG
print("* Entering Interrupt *rn");
#endif
microblaze_disable_interrupts();
// Do something useful here :).
microblaze_enable_interrupts();
#ifdef DEBUG
print("* Leaving Interrupt *rn");
#endif
}