stm32F4程序运行时间代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/////STM32F407 程序运行时间测量
/////用TIM3_time_start (); 和TIM3_time_over();将带测代码包起
/******例如 :


TIM3_time_start ();
/* 被测部分代码 */
n = TIM3_time_over();
/* 其他代码 */
///n=1000 则被测部分运行了1000us


**/


//arr:自动重装值。
//psc:时钟预分频数
//定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=定时器工作频率,单位:Mhz
//这里使用的是定时器3!
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); ///使能TIM3时钟

TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值
TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;

TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3

TIM_Cmd(TIM3,ENABLE); //使能定时器3

}
u16 run_time_us; //计量程序运行时间
void TIM3_time_start (void)
{
TIM3_Int_Init(60*1000,84-1);///时钟频率84M 84分频 => 1 = 1us 最大数值65,536 约60ms
TIM_ClearFlag(TIM3,TIM_FLAG_Update);
}


////返回值 表示运行时间 65535表明溢出
/////
u16 TIM3_time_over (void)
{
if(TIM_GetFlagStatus(TIM3,TIM_FLAG_Update) == 1)
return 0xFFFF;
else
return TIM_GetCounter(TIM3);
}


相关文档
最新文档