打印

定时器0中断

[复制链接]
1941|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chen3bing|  楼主 | 2007-9-3 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器0中断

我从TI网站上载了一些例子,学习2812。
没有电路板,只进行软件仿真。
其中一个定时器0中断,发现不进中断。
情况是这样的,观察定时器可以计数。
本来我定时器周期设为0XFFFFFFFF.
可是计到0以后,并不恢复为0XFFFFFFFF,
而是0X5F5E100.并且计到0以后,也不进中断。
请高手指教,谢谢!我已经被这个问题困扰了好久。
下面是主程序:
#include "DSP281x_Device.h"     // DSP281x Headerfile Include File
#include "DSP281x_Examples.h"   // DSP281x Examples Include File


interrupt void cpu_timer0_isr(void);

void main(void)
{

   InitSysCtrl();

   DINT;

   InitPieCtrl();
   

   IER = 0x0000;
   IFR = 0x0000;

   InitPieVectTable();


   EALLOW;  // This is needed to write to EALLOW protected registers
   PieVectTable.TINT0 = &cpu_timer0_isr;
   EDIS;    // This is needed to disable write to EALLOW protected registers

   InitCpuTimers();   // For this example, only initialize the Cpu Timers

   ConfigCpuTimer(&CpuTimer0, 100, 1000000);
   StartCpuTimer0();

   IER |= M_INT1;

   PieCtrlRegs.PIEIER1.bit.INTx7 = 1;


   EINT;   // Enable Global interrupt INTM
   ERTM;   // Enable Global realtime interrupt DBGM

   for(;
      {asm(" nop";
       asm(" nop";
      }




interrupt void cpu_timer0_isr(void)
{
   CpuTimer0.InterruptCount++;           //断点在这,但运行不到这里
   asm(" nop";
   
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

 

相关帖子

沙发
zzlnmg6| | 2008-11-25 23:36 | 只看该作者

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

#include "DSP28_Device.h"    // DSP281x Headerfile Include File



interrupt void cpu_timer0_isr(void);

void main(void)
{

   InitSysCtrl();

   DINT;

   InitPieCtrl();
   

   IER = 0x0000;
   IFR = 0x0000;

   InitPieVectTable();


   EALLOW;  // This is needed to write to EALLOW protected registers
   PieVectTable.TINT0 = &cpu_timer0_isr;
   EDIS;    // This is needed to disable write to EALLOW protected registers

   InitCpuTimers();   // For this example, only initialize the Cpu Timers

   ConfigCpuTimer(&CpuTimer0, 100, 1000000);
   StartCpuTimer0();

   IER |= M_INT1;

   PieCtrl.PIEIER1.bit.INTx7 = 1;


   EINT;   // Enable Global interrupt INTM
   ERTM;   // Enable Global realtime interrupt DBGM

   for(;;);
     
       




interrupt void cpu_timer0_isr(void)
{
   CpuTimer0.InterruptCount++;           //断点在这,但运行不到这里
   NOP;
   
   PieCtrl.PIEACK.all = PIEACK_GROUP1;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

2540

帖子

2

粉丝