工具/软件:TI C/C++编译器
大家好、这是我的代码:
int main ()
{
while (1)
get_inputs();
some _condition_function();
}
我想知道"so_mand_dfunction()"在 TI Launchpad 上执行所需的时间。
我知道的唯一方法是使用微控制器的定时器外设之一在函数被调用前开始计数一行、并在函数返回时读取计数值。
是否有更好/更简单的方法?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
大家好、这是我的代码:
int main ()
{
while (1)
get_inputs();
some _condition_function();
}
我想知道"so_mand_dfunction()"在 TI Launchpad 上执行所需的时间。
我知道的唯一方法是使用微控制器的定时器外设之一在函数被调用前开始计数一行、并在函数返回时读取计数值。
是否有更好/更简单的方法?
以下代码来自 TivaWare 外设驱动程序库用户指南。 您可以在第28.3节中找到相同的内容。 只需在 SysTickValueGet ()之前添加函数即可。
uint32_t ui32Value; // 配置并启用 SysTick 计数器。 // SysTickPeriodSet (1000); SysTickEnable(); // //延迟一段时间... // // ////读取当前 SysTick 值。 // ui32Value = SysTickValueGet ();
如果要停止计数器、可以调用 SysTickDisable。 但是、这仅意味着当前计数器停止。 在您的示例中、计数器将保持在600。 重新启用后、在重新加载1000之前、它将继续从600向下计数到0。 如果要立即重新加载、则需要直接向 NVIC_ST_CURRENT 寄存器写入重新加载的值。
28.2.2.2 SysTickEnable
启用 SysTick 计数器。
原型:
无效
SysTickEnable (空)
描述:
此函数启动 SysTick 计数器。 如果已注册中断处理程序、则会调用它
计数器回滚时的值。
注:
调用此函数会使 SysTick 计数器从其当前值开始(重新)计数
值。 计数器不会自动重新加载上一次调用中指定的周期
SysTickPeriodSet()。 如果需要立即重新加载、则使用 NVIC_ST_CURRENT 寄存器
必须写入以强制重新加载。 对该寄存器的任何写入操作都会将 SysTick 计数器清零
并在下一个时钟上使用提供的周期进行重新加载。
因此、代码应如下所示:
int main { uint32_t ui32Value; while (1) SysTickPeriodSet( 1000 ); SysTickEnable (); function_for_interest ();//这是我们要进行基准测试的函数。 ui32Value = SysTickValueGet (); SysTickDisable (); HWREG ( NVIC_ST_CURRENT )= 0;//将计数器重置为其默认值,即= 1000。 sore_other _function ();//我们对基准标记不感兴趣的其他应用程序代码 。}