熟悉AT91RM9200的请进来

[复制链接]
2392|2
 楼主| zsf.xjtu 发表于 2007-9-20 22:15 | 显示全部楼层 |阅读模式
最近在试着用定时器里面的实时定时器中断,不知道哪里设置的不恰当,老是无法进入中断<br />请高手指点哈:<br />#include&nbsp;&quot;timer.h&quot;<br />extern&nbsp;void&nbsp;AT91F_DBGU_Printk(char*&nbsp;buffer);<br />void&nbsp;InitINT1(void)//中断源1的初始化<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />AT91C_BASE_AIC-&gtAIC_SMR[1]=0x00;//中断源1优先级设置<br />AT91C_BASE_AIC-&gtAIC_SVR[1]=(unsigned&nbsp;int)INT1done;//中断入口函数<br />/*&nbsp;&nbsp;int&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;__asm<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;tmp,CPSR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BIC&nbsp;tmp,tmp,#0x80<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,tmp<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />*/&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_AIC-&gtAIC_ICCR=0x02;//中断标志清零<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_AIC-&gtAIC_IECR=0x02;//中断使能置位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />void&nbsp;InitTimer(void)//定时器初始化<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_ST-&gtST_RTMR=&nbsp;&nbsp;&nbsp;&nbsp;0x8000;//65536个SCLK慢时钟周期<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_ST-&gtST_IER=AT91C_ST_RTTINC;//选择实时定时器<br />}<br />void&nbsp;EndTimer(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_ST-&gtST_IDR=0x01;//禁用周期间隔定时器状态<br />}<br />void&nbsp;__irq&nbsp;INT1done(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_DBGU_Printk(&quot;INT1&nbsp;done~~
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(AT91C_BASE_ST-&gtST_SR==AT91C_ST_RTTINC&nbsp;)<br />//判断是否是定时器的实时定时器中断<br />&nbsp;&nbsp;&nbsp;&nbsp;{TimerDone();}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_AIC-&gtAIC_ICCR=0x02;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_AIC-&gtAIC_EOICR=0x02;<br />}<br /><br />void&nbsp;TimerDone(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_DBGU_Printk(&quot;Timer&nbsp;done~~
&quot;);<br />}<br />主函数调用如下:<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;tmpbuf[36];<br />&nbsp;&nbsp;&nbsp;&nbsp;InitINT1();<br />&nbsp;&nbsp;&nbsp;&nbsp;InitTimer();<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__asm<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;tmp,CPSR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(tmpbuf,&quot;I_BIT=%d        ST_CRTR=%d
&quot;,tmp&&0x80,(AT91C_BASE_ST-&gtST_CRTR)&0xFFFFF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_DBGU_Printk(tmpbuf);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_Delay(50000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_DBGU_Printk(&quot;the&nbsp;main&nbsp;operate&nbsp;is&nbsp;running^^
&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />请高手指点下,是不是我哪里设置的还缺少点啥&nbsp;谢谢&nbsp;&nbsp;&nbsp;&nbsp;
wangkj 发表于 2007-9-20 22:28 | 显示全部楼层

9200裸奔者,俺都是跑在linux下面,没这么用过。

9200裸奔是否太浪费了呀?
 楼主| zsf.xjtu 发表于 2007-9-21 09:00 | 显示全部楼层

现在我只是在线调试

把整个程序在线仿真好了以后,还是要移植到linux里面去的。<br />可是总也搞不好这个中断&nbsp;进不去
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部