欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

STM32中SysTick在3.5固件庫中的應用

作者:真誠冰雪天涯   來源:不詳   點擊數:  更新時間:2014年07月27日   【字體:

一、SysTick
STM32內核中有一個系統定時器,它是一個24位遞減計數器。工作原理是系統時基定時器設定初值并使能后,每經過1個系統時鐘周期,計數值就減,當計數值減到0時,系統定時器會重新自動重裝初值,并繼續下一次計數,同時內部的COUNTFLAG標志位會置位。觸發中斷。
在很早的固件庫中,提供了很多函數,來對SysTick進行設置,但是到了3.5版本的標準固件庫中,移除了相關驅動函數,用戶必須調用CMSIS 定義的函數,其中CMSIS只提供了一個Systick設置的函數,替代了STM32原來有的所有的驅動函數,這樣做的目的,可能是簡化Systick 的設置,可是降低了用戶對SysTick的可控性。
在CMSIS中提供的函數是  SysTick_Config(uint32_t ticks); 該函數設置了自動重載入計數器(LOAD)的值,SysTick IRQ的優先級,復位了計數器(VAL)的值,開始計數并打開SysTick IRQ中斷。SysTick時鐘默認使用系統時鐘。
其中這個函數定義在Core_cm3.h中 ,源代碼如下所示:
   static __INLINE uint32_t SysTick_Config(uint32_t ticks)
 {
   if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);                                                                                              
   SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;             
   NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);        
   SysTick->VAL   = 0;                                                
   SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                    SysTick_CTRL_TICKINT_Msk   |
                    SysTick_CTRL_ENABLE_Msk;                          
   return (0);                                              
 }
從上面的函數中可以看出,這個函數把Systick的初值,中斷優先級,使能中斷,開啟定時器都完成了。大大簡化了程序。
其中ticks 代表的是初值。例如系統時鐘是72Mhz 那么要產生1ms的時基,那么我們可以這樣去寫。
SysTick_Config(SystemCoreClock/1000);  當然也可以寫成:SysTick_Config(72000);

關閉窗口

相關文章