<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> 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);

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮