定时器0中断

[复制链接]
 楼主| chen3bing 发表于 2007-9-3 21:20 | 显示全部楼层 |阅读模式
定时器0中断<br /><br />我从TI网站上载了一些例子,学习2812。<br />没有电路板,只进行软件仿真。<br />其中一个定时器0中断,发现不进中断。<br />情况是这样的,观察定时器可以计数。<br />本来我定时器周期设为0XFFFFFFFF.<br />可是计到0以后,并不恢复为0XFFFFFFFF,<br />而是0X5F5E100.并且计到0以后,也不进中断。<br />请高手指教,谢谢!我已经被这个问题困扰了好久。<br />下面是主程序:<br />#include&nbsp;&quot;DSP281x_Device.h&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;DSP281x&nbsp;Headerfile&nbsp;Include&nbsp;File<br />#include&nbsp;&quot;DSP281x_Examples.h&quot;&nbsp;&nbsp;&nbsp;//&nbsp;DSP281x&nbsp;Examples&nbsp;Include&nbsp;File<br /><br /><br />interrupt&nbsp;void&nbsp;cpu_timer0_isr(void);<br /><br />void&nbsp;main(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;InitSysCtrl();<br /><br />&nbsp;&nbsp;&nbsp;DINT;<br /><br />&nbsp;&nbsp;&nbsp;InitPieCtrl();<br />&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;IER&nbsp;=&nbsp;0x0000;<br />&nbsp;&nbsp;&nbsp;IFR&nbsp;=&nbsp;0x0000;<br /><br />&nbsp;&nbsp;&nbsp;InitPieVectTable();<br /><br /><br />&nbsp;&nbsp;&nbsp;EALLOW;&nbsp;&nbsp;//&nbsp;This&nbsp;is&nbsp;needed&nbsp;to&nbsp;write&nbsp;to&nbsp;EALLOW&nbsp;protected&nbsp;registers<br />&nbsp;&nbsp;&nbsp;PieVectTable.TINT0&nbsp;=&nbsp;&cpu_timer0_isr;<br />&nbsp;&nbsp;&nbsp;EDIS;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;This&nbsp;is&nbsp;needed&nbsp;to&nbsp;disable&nbsp;write&nbsp;to&nbsp;EALLOW&nbsp;protected&nbsp;registers<br /><br />&nbsp;&nbsp;&nbsp;InitCpuTimers();&nbsp;&nbsp;&nbsp;//&nbsp;For&nbsp;this&nbsp;example,&nbsp;only&nbsp;initialize&nbsp;the&nbsp;Cpu&nbsp;Timers<br /><br />&nbsp;&nbsp;&nbsp;ConfigCpuTimer(&CpuTimer0,&nbsp;100,&nbsp;1000000);<br />&nbsp;&nbsp;&nbsp;StartCpuTimer0();<br /><br />&nbsp;&nbsp;&nbsp;IER&nbsp;|=&nbsp;M_INT1;<br /><br />&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEIER1.bit.INTx7&nbsp;=&nbsp;1;<br /><br /><br />&nbsp;&nbsp;&nbsp;EINT;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;Global&nbsp;interrupt&nbsp;INTM<br />&nbsp;&nbsp;&nbsp;ERTM;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;Global&nbsp;realtime&nbsp;interrupt&nbsp;DBGM<br /><br />&nbsp;&nbsp;&nbsp;for(;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{asm(&quot;&nbsp;nop&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;nop&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}&nbsp;<br /><br /><br />interrupt&nbsp;void&nbsp;cpu_timer0_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;CpuTimer0.InterruptCount++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//断点在这,但运行不到这里<br />&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;nop&quot;;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;PieCtrlRegs.PIEACK.all&nbsp;=&nbsp;PIEACK_GROUP1;<br />}<br /><br />&nbsp;<br />
zzlnmg6 发表于 2008-11-25 23:36 | 显示全部楼层

我试了下,可以进中断啊,我改了下你的程序

#include&nbsp;&quot;DSP28_Device.h&quot;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;DSP281x&nbsp;Headerfile&nbsp;Include&nbsp;File<br /><br /><br /><br />interrupt&nbsp;void&nbsp;cpu_timer0_isr(void);<br /><br />void&nbsp;main(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;InitSysCtrl();<br /><br />&nbsp;&nbsp;&nbsp;DINT;<br /><br />&nbsp;&nbsp;&nbsp;InitPieCtrl();<br />&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;IER&nbsp;=&nbsp;0x0000;<br />&nbsp;&nbsp;&nbsp;IFR&nbsp;=&nbsp;0x0000;<br /><br />&nbsp;&nbsp;&nbsp;InitPieVectTable();<br /><br /><br />&nbsp;&nbsp;&nbsp;EALLOW;&nbsp;&nbsp;//&nbsp;This&nbsp;is&nbsp;needed&nbsp;to&nbsp;write&nbsp;to&nbsp;EALLOW&nbsp;protected&nbsp;registers<br />&nbsp;&nbsp;&nbsp;PieVectTable.TINT0&nbsp;=&nbsp;&cpu_timer0_isr;<br />&nbsp;&nbsp;&nbsp;EDIS;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;This&nbsp;is&nbsp;needed&nbsp;to&nbsp;disable&nbsp;write&nbsp;to&nbsp;EALLOW&nbsp;protected&nbsp;registers<br /><br />&nbsp;&nbsp;&nbsp;InitCpuTimers();&nbsp;&nbsp;&nbsp;//&nbsp;For&nbsp;this&nbsp;example,&nbsp;only&nbsp;initialize&nbsp;the&nbsp;Cpu&nbsp;Timers<br /><br />&nbsp;&nbsp;&nbsp;ConfigCpuTimer(&CpuTimer0,&nbsp;100,&nbsp;1000000);<br />&nbsp;&nbsp;&nbsp;StartCpuTimer0();<br /><br />&nbsp;&nbsp;&nbsp;IER&nbsp;|=&nbsp;M_INT1;<br /><br />&nbsp;&nbsp;&nbsp;PieCtrl.PIEIER1.bit.INTx7&nbsp;=&nbsp;1;<br /><br /><br />&nbsp;&nbsp;&nbsp;EINT;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;Global&nbsp;interrupt&nbsp;INTM<br />&nbsp;&nbsp;&nbsp;ERTM;&nbsp;&nbsp;&nbsp;//&nbsp;Enable&nbsp;Global&nbsp;realtime&nbsp;interrupt&nbsp;DBGM<br /><br />&nbsp;&nbsp;&nbsp;for(;;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />}&nbsp;<br /><br /><br />interrupt&nbsp;void&nbsp;cpu_timer0_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;CpuTimer0.InterruptCount++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//断点在这,但运行不到这里<br />&nbsp;&nbsp;&nbsp;NOP;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;PieCtrl.PIEACK.all&nbsp;=&nbsp;PIEACK_GROUP1;<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

2540

帖子

2

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