久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

STM32中的tic與toc,用SysTick統(tǒng)計代碼段執(zhí)行時間

作者:劉蕊飛   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年03月02日   【字體:

STM32中的systick一共有4個寄存器,名稱和地址分別是:

SysTick_CTRL,        0xE000E010  --  
控制寄存器
SysTICK_LOAD,     0xE000E014  --  
重載寄存器
SysTick_VAL,        0xE000E018  --  
當前值寄存器
SysTick_CALRB,   0xE000E01C  --   
校準值寄存器

首先看SysTick->CTRL控制寄存器:寄存器內(nèi)有4個位具有意義




0位:ENABLESystick 使能位  0:關(guān)閉Systick功能;1:開啟Systick功能)
1位:TICKINTSystick 中斷使能位    0:關(guān)閉Systick中斷;1:開啟Systick中斷)
2位:CLKSOURCESystick時鐘源選擇  0:使用HCLK/8 作為Systick時鐘;1:使用HCLK作為Systick時鐘)
16位:COUNTFLAGSystick計數(shù)比較標志,如果在上次讀取本寄存器后,SysTick 已經(jīng)數(shù)到了0,則該位為1。如果讀取該位,該位將自動清零

SysTick_LOAD  
重載寄存器: 




 

SysTick_VAL
當前值寄存器: 


也是個24位的寄存器,讀取時返回當前倒計數(shù)的值;寫它則使之清零,同時還會清除在SysTick 控制及狀態(tài)寄存器中的COUNTFLAG 標志。


SysTick_CALRB  
校準值寄存器: 


這個寄存器好像目前的水平我還用不到,大體意思明白點,把英文說明放這吧:
31 NOREF 1=沒有外部參考時鐘(STCLK 不可用)0=外部參考時鐘可用
30 SKEW1=校準值不是準確的1ms 0=校準值是準確的1ms
[23:0] Calibration value
Indicates the calibration value when the SysTick counter runs on HCLK max/8 as external clock. The value is product dependent, please refer to the Product Reference Manual, SysTick Calibration Value section. When HCLK is programmed at the maximum frequency, the SysTick period is 1ms. If calibration information is not known, calculate the calibration value required from the frequency of the processor clock or external clock.

類似matlab里的tic與toc函數(shù),用來統(tǒng)計程序代碼執(zhí)行需要的時間:
uint16_t OverFlowTimes=0;

void tic(void)                            //程序開始計時
{
SysTick->CTRL |= (1<<2);   //時鐘選擇,HCLK
SysTick->CTRL |= (1<<1);   //中斷使能
SysTick->VAL=0X00;            //當前數(shù)值寄存器清零,并清除溢出標志位
SysTick->LOAD=0XFFFFFF;     //計數(shù)器賦初值
SysTick->CTRL |= (1<<0);     //開啟計數(shù)器
}

void toc(void)                            //結(jié)束計時
{
float ElaspTime;
uint32_t ClkNum;
SysTick->CTRL &= ~(1<<0); //關(guān)閉計數(shù)器
ClkNum=SysTick->VAL; //讀取計數(shù)器的值
ElaspTime=(OverFlowTimes*((float)0xffffff/SystemCoreClock)+(float)(0xffffff-ClkNum)/SystemCoreClock); //計算時間
OverFlowTimes=0;
printf("\r\nEscaple time is %f\r\n",ElaspTime);

}
/*溢出的次數(shù)*/
void SysTick_Handler(void)
{
OverFlowTimes++;
}


 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 欧美日韩一区在线 | 亚洲乱码一区二区 | 怡红院免费的全部视频 | 久久99深爱久久99精品 | 毛片高清 | 亚洲精品一区二区 | 亚洲精品色| 国产免费一区二区 | 国产精品久久久久国产a级 欧美日韩国产免费 | 国产精品成人品 | 国产熟熟 | 少妇特黄a一区二区三区88av | 黄免费观看视频 | 欧美日韩视频在线第一区 | 羞羞视频免费观看 | 国产成人午夜电影网 | 欧美视频网 | 一区二区三区在线观看视频 | 国产乱精品一区二区三区 | 日本高清视频在线播放 | 视频在线h | 国产精品日韩欧美一区二区 | 日韩爱爱网站 | 麻豆视频国产在线观看 | 欧美伊人久久久久久久久影院 | 黄色免费观看网站 | 国产一区二区三区色淫影院 | 亚洲精品久久久久久久久久久 | 一区二区久久电影 | 欧美嘿咻 | 人人爽人人爽 | 久久精品免费一区二区 | 一区二区三区电影网 | 欧美大片久久久 | 中文字幕一区二区三区在线观看 | 毛片免费视频 | 一区二区三区在线观看免费视频 | 黄a网站| 日本不卡一区二区三区在线观看 | 国产中的精品av涩差av | 亚洲国产精品suv |