标题: 【定时器程序】求助 [打印本页]
作者: ddlikedd 时间: 2006-12-28 10:42 标题: 【定时器程序】求助
用定时器驱动 cnt计数
int cnt=0;
/******************************************************************************/
void init_timer()
{
/*TS=1s*/
IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_BASE, 0x07840);
IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_BASE, 0x017D);
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_BASE,
ALTERA_AVALON_TIMER_CONTROL_ITO_MSK |
ALTERA_AVALON_TIMER_CONTROL_CONT_MSK |
ALTERA_AVALON_TIMER_CONTROL_START_MSK);
}
static void isr_timer(void* context, alt_u32 id)
{
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE,0);
cnt++;
}
int main (void)
{
#ifdef TIMER_BASE
init_timer();
printf ("init timer");
#endif
alt_irq_register(TIMER_IRQ,TIMER_BASE,isr_timer);
while (1)
{
if( cnt%10 == 0 )
printf ( "%d" , cnt);
};
return 0;
}
哪位帮忙看一下,为什么输出只有
00000000..
呢??
多谢
作者: kzw 时间: 2006-12-28 16:33
定时器的时间是1s吗,如果是的话,当cnt=0的时候,循环里面一直会打印0,等1s秒才变化,1s的时间会打印很多的东西的。
作者: Logicalpower 时间: 2006-12-28 17:54
你要把system library的debug目录里的system description目录里的alt_sys_init.c拷贝到system library 并把关于定时器初始化的部分注释掉。如果不这样,那NiosIDE不会使用你自己的中断服务程序
作者: ddlikedd 时间: 2006-12-29 11:51
输出一直是 0
你要把system library的debug目录里的system description目录里的alt_sys_init.c拷贝到system library 并把关于定时器初始化的部分注释掉。如果不这样,那NiosIDE不会使用你自己的中断服务程序
system library是指??
作者: Logicalpower 时间: 2006-12-29 11:58
一个NIOS工程有两个目录,一个是应用程序本身,还有一个系统库(SYSTEM LIBRARY).
作者: ddlikedd 时间: 2006-12-29 12:29
有个 warning: passing arg 2 of `alt_irq_register' makes pointer from integer without a cast
Post-processing to create boot_rom.hex
作者: ddlikedd 时间: 2006-12-29 12:54
找到问题了
IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_BASE, (TIMER_PERIOD >> 16));
IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_BASE, (TIMER_PERIOD &0xffff));
改成这个就好了。呵呵
谢谢各位。
作者: kzw 时间: 2006-12-31 09:51
这和你自己以前的表述有什么不一样吗?
作者: ddlikedd 时间: 2007-1-2 01:19
可是这样程序就可以运行,以前那样就不行。
还有就是按键sw3老是自动分配到c5,可是reset也是c5,于是就改到别的。
可是不能写进ram了。
作者: kzw 时间: 2007-1-4 22:29
你是说出现新的问题了?
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |