您好!
我们使用的是 TMS570LC4357ZWT (launchpad)、我们希望监控我们的时间周期。
为此,我们使用配置了 HCG 的 PMU:
- PMU 计数器使能
-事件导出启用
-计数器事件0/1/2设置为0x11 (PMU_CYCLE _COUNT)
在 HCG 中、HCLK 设置为100MHz。
我们基于示例 spna138a 的代码:
初始化:
#define f_HCLK (float) 100.0
volatile unsigned long cycles_PMU_start、cycles_PMU_end、cycles_PMU_measure、cycles_PMU_comp、cycles_PMU_code、cycles_PMU_prev、cycles_PMU;
易失性浮点 TIME_PMU_CODE;
_pmuInit_();
_pmuEnableCountersGlob_();
_pmuSetCountEvent_(pmuCOUNTER0、PMU_cycle_count);
CYCESS_PMU_PRV = 0;
while (1){
_pmuResetCounters_();
_pmuResetEventCounter_();
_pmuStartCounter_(0x80000007U);
cycles_PMU_prev =_pmuGetEventCount_(pmuCOUNTER0);
/*要测量的代码*/
_pmuStopCounter_(pmuCOUNTER0);
cycles_PMU =_pmuGetEventCount_(pmuCOUNTER0);
CYCes_PMU_Measure = CYCes_PMU_PRV - CYCes_PMU;
TIME_PMU_CODE = CYCLS_PMU_Measure /(f_HCLK);// TIME_CODE [us]、f_HCLK [MHz]
}
首先、我们已经看到、如果我们希望在 CYCLES _PMU 中包含数据、则必须为所有计数器(_pmuStartCounter_(0x80000007U)星号、而不是星号。 这是正常的吗?
第二步:使用我们的代码,我们将始终检索与 TIME_PMU_CODE (42889676.0)中的值相同 的值,而不受要测量的代码的影响,使用示波器和 GPIO 估算的代码持续时间。
我们认为我们的代码中存在问题...
如果有人想帮助我们...
提前感谢、
此致、
Alain。