#include <stdio.h>
#include "system.h"
#include "VGA.h"
#include "alt_types.h"
#include "altera_avalon_pio_regs.h"
#include "altera_avalon_timer_regs.h"
#include <sys/alt_irq.h>
static volatile alt_u8 value ;
static void timer_isr(void* base , alt_u32 id)
{
IOWR_ALTERA_AVALON_TIMER_STATUS((alt_u32*) base , 0);
WriteRgb(VGA_IP_BASE,value);
}
//中断服务子程序,把value写到VGA_IP上
void init_timer(void* base)
{
IOWR_ALTERA_AVALON_TIMER_CONTROL((alt_u32*) base,
ALTERA_AVALON_TIMER_CONTROL_ITO_MSK |
ALTERA_AVALON_TIMER_CONTROL_CONT_MSK |
ALTERA_AVALON_TIMER_CONTROL_START_MSK );
}
int main(void)
{
static alt_u32 ct;
init_timer((alt_u32*)TIMER_BASE);
alt_irq_register(TIMER_IRQ , (alt_u32*)TIMER_BASE , timer_isr);
/*对于直接使用XX_BASE的函数,我们无需对其进行地址转换,但是这个XX_BASE正好是我们自己定
的函数的参数,那么要对他们进行强制地址转换*/
while(1)
{
if(ct!=50000)
{
ct++;
}
else
{
ct=0;
}
value=IORD_ALTERA_AVALON_PIO_DATA(PIO_IN_BASE);
}
return 0;
}
在ISS调试中本程序没有问题,但是在硬件调试中在进入定时器中断后就跳不出来了,请问高手这是为什么,应该如何解决
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |