我使用clock追踪定时器程序里面每个语句段所需要的周期数,有个地方不解请指教一下。
部分程序如下:
void main(void)
{
……
……
……
StartCpuTimer0(); 此句需要3个周期
IER |=M_INT1; 2个周期
PieCtrlRegs.PIEIER1.bit.INTx7=1; 2个周期
EINT; 2个周期
ERTM; 2个周期
i=0; 2个周期
for(; 😉 不清楚
{
}
}
interrupt void ISRTimer0(void)
{
CpuTimer0.InterruptCount++;
…….
……
……
}
定时为1秒,也就是150MHz.
从StartCpuTimer0() 到进入中断服务程序需要150MHz+29个周期。
从StartCpuTimer0()到for(; ;)前需要13个周期
CPU需要9个周期获取中断向量和保存重要的CPU寄存器
29-13-9=7,剩余的7个周期用来做什么了?
rookiecalf:
C语言中有些跳转什么的,也会有消耗,如果不是非常大的消耗就不要去追究了。如果非要追究,看看是否可以在汇编级进行调试。
我使用clock追踪定时器程序里面每个语句段所需要的周期数,有个地方不解请指教一下。
部分程序如下:
void main(void)
{
……
……
……
StartCpuTimer0(); 此句需要3个周期
IER |=M_INT1; 2个周期
PieCtrlRegs.PIEIER1.bit.INTx7=1; 2个周期
EINT; 2个周期
ERTM; 2个周期
i=0; 2个周期
for(; 😉 不清楚
{
}
}
interrupt void ISRTimer0(void)
{
CpuTimer0.InterruptCount++;
…….
……
……
}
定时为1秒,也就是150MHz.
从StartCpuTimer0() 到进入中断服务程序需要150MHz+29个周期。
从StartCpuTimer0()到for(; ;)前需要13个周期
CPU需要9个周期获取中断向量和保存重要的CPU寄存器
29-13-9=7,剩余的7个周期用来做什么了?
xiaobo wu:
回复 rookiecalf:
非常感谢您的提示!