[技术求助] 并不恢复为0XFFFFFFFF

[复制链接]
697|8
 楼主| wuhany 发表于 2020-12-16 19:55 | 显示全部楼层 |阅读模式
我从网站上载了一些例子,学习2812。

没有电路板,只进行软件仿真。

其中一个定时器0中断,发现不进中断。

情况是这样的,观察定时器可以计数。

本来我定时器周期设为0XFFFFFFFF.

可是计到0以后,并不恢复为0XFFFFFFFF
jiajs 发表于 2020-12-16 20:05 | 显示全部楼层
成什么了
 楼主| wuhany 发表于 2020-12-16 20:09 | 显示全部楼层
是0X5F5E100.并且计到0以后,也不进中断。
lizye 发表于 2020-12-16 20:12 | 显示全部楼层
可以看看程序
 楼主| wuhany 发表于 2020-12-16 20:16 | 显示全部楼层

下面是主程序:

#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;

}



//===========================================================================

// No more.

//===========================================================================
shimx 发表于 2020-12-16 20:23 | 显示全部楼层

IFR = 0x0000;



这句应该写成



IFR = 0xFFFF;



先清所有的中断标志位.



程序没有进中断无非是中断响应相关的设置不正确.拿本书对照着仔细查一下.
spark周 发表于 2020-12-16 20:23 | 显示全部楼层
建议楼主还是买一块开发板   这样做起来   会有一个直观的体会
spark周 发表于 2020-12-16 20:30 | 显示全部楼层
很多问题   如果用仿真软件来模仿   其实并不能得到正确的答案   实际电路跑一跑   可能就会豁然开朗   
 楼主| wuhany 发表于 2020-12-16 20:33 | 显示全部楼层
唉,还是没有什么结果,算了,多谢大家啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

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