资讯详情

STM32中的tic与toc,用SysTick统计代码段执行时间

M32中的systick,一共有4个寄存器,名称和地址分别是: SysTick_L,0xE000E010--控制寄存器 SysCK_LOAD,0xE000E014--重载寄存器 SysTick_L,0xE000E018--当前值寄存器 SysTick_CALRB,0xE000E01C--校准值寄存器 首先看SysTick->CTRL控制寄存器:寄存器内有4个位具有意义

第0位:ENABLE,Systick使能位(0:关闭Systick功能;1:开启Systick功能) 第1位:TICKI,Systick中断使能位(0:关闭Systick中断;1:开启Systick中断) 第2位:CLKSOURCE,Systick时钟源选择(0:使用HCLK/8作为Systick时钟;1:使用HCLK作为Systick时钟) 第16位:COUNTFLAG,Systick计数比较标志,如果在上次读取本寄存器后,SysTick已经数到了0,则该位为1。如果读取该位,该位将自动清零 SysTick_LOAD重载寄存器: SysTick_VAL当前值寄存器: 也是个24位的寄存器,读取时返回当前倒计数的值;写它则使之清零,同时还会清除在SysTick控制及状态寄存器中的COUNTFLAG标志。 SysTick_CALRB校准值寄存器: 这个寄存器好像目前的水平我还用不到,大体意思明白点,把英文说明放这吧: 位31NOREF:1=没有外部参考时钟(STCLK不可用)0=外部参考时钟可用 位30SKEW:1=校准值不是准确的1ms0=校准值是准确的1ms 位[23:0]:Calibrationvalue IndicatesthecalibrationvaluewhentheSysTickcounterrunsonHCLKmax/8asexternalclock.Thevalueisproductdependent,pleaserefertotheProductReferenceManual,SysTickCalibrationValuesection.WhenHCLKisprogrammedatthemaximumfrequency,theSysTickperiodis1ms.Ifcalibrationinformationisnotknown,calculatethecalibrationvaluerequiredfromthefrequencyoftheprocessorclockorexternalclock.

类似matlab里的tic与toc函数,用来统计程序代码执行需要的时间: uint16_t OverFlowTimes=0;

void tic(void) //程序开始计时 { SysTick->CTRL |= (1<<2); //时钟选择,HCLK SysTick->CTRL |= (1<<1); //中断使能 SysTick->VAL=0X00;
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台