在TMS320f2808的定时器这个程序里面,我有几个不解:
第一,在进入中断之前,为什么没有这条代码:PieCtrlRegs.PIEACK.all=PIEACK_GROUP1; 因为dsp复位之后ACK寄存器是1,必须写1清零,才能相应P定时器中断;
第二,在进入中断之后,为什么没有清除标志位的代码:CpuTimer0Regs.TCR.bit.TIF = 1; // 写1清0
第三,我还想扩展问一下,看门狗定时器有标志位吗?
shasha su:1、进入之前要是有这行代码,等于把事件清除了,以后就进入不了中断了。2、PIE中断和定时中断是不一样的。3、多读手册,你就是高手。
在TMS320f2808的定时器这个程序里面,我有几个不解:
第一,在进入中断之前,为什么没有这条代码:PieCtrlRegs.PIEACK.all=PIEACK_GROUP1; 因为dsp复位之后ACK寄存器是1,必须写1清零,才能相应P定时器中断;
第二,在进入中断之后,为什么没有清除标志位的代码:CpuTimer0Regs.TCR.bit.TIF = 1; // 写1清0
第三,我还想扩展问一下,看门狗定时器有标志位吗?
Harry xie1:
回复 Eric Ma:
非常感谢老师您的回答。再请问3个问题:
1.中断标志位(包括PIE级和CPU级的)不影响“中断是否能够进入中断”,故不需清零,标志位的作用只是判断是否进入中断的作用,只是有些是自动和手动清零的;
2.进入CPU timer中断,标志位是自动清零的还是必须手动清零的?
3.看门狗中断标志位是哪一个?它好像和其他中断标志位不一样,我看了它只有一个看门狗中断状态位:WDINTS(是SCSR寄存器的第二位)。
期待中…
在TMS320f2808的定时器这个程序里面,我有几个不解:
第一,在进入中断之前,为什么没有这条代码:PieCtrlRegs.PIEACK.all=PIEACK_GROUP1; 因为dsp复位之后ACK寄存器是1,必须写1清零,才能相应P定时器中断;
第二,在进入中断之后,为什么没有清除标志位的代码:CpuTimer0Regs.TCR.bit.TIF = 1; // 写1清0
第三,我还想扩展问一下,看门狗定时器有标志位吗?
xiaonan zhang:
回复 Eric Ma:
正有此疑惑,感谢回答
在TMS320f2808的定时器这个程序里面,我有几个不解:
第一,在进入中断之前,为什么没有这条代码:PieCtrlRegs.PIEACK.all=PIEACK_GROUP1; 因为dsp复位之后ACK寄存器是1,必须写1清零,才能相应P定时器中断;
第二,在进入中断之后,为什么没有清除标志位的代码:CpuTimer0Regs.TCR.bit.TIF = 1; // 写1清0
第三,我还想扩展问一下,看门狗定时器有标志位吗?
Jianqun Xie:
回复 Eric Ma:
Eric Ma
第一:手册中的复位后状态为1的说法有误,应该为0,所以不需要清零。你自己用2808测试一下就知道了。
我这段时间使用2812也一直在困惑这个,幸好被您提醒了!自己观察了一下Memory窗口发现真的reset后是全0。看来连官方Reference也不能一味相信了,好惆怅