新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32學習筆記——使用SysTick定時器做延時

        STM32學習筆記——使用SysTick定時器做延時

        作者: 時間:2016-11-28 來源:網絡 收藏
        開學了,無法再像假期一樣能夠一整天玩板了!好在這學期的課說少不少,說多也不多,每周也有十幾大節。剩下的時間除去學生工作等一些七七八八的事情,間斷著還是能看看教程玩玩板!越發發現《STM32菜鳥學習手冊——啰嗦版》真是不錯的入門教程,簡單易懂。其他諸如《固件庫手冊》等等官方文件更是必不可少,可惜ST公司的網頁找手冊實在麻煩得很吶!

        這兩天一直在看有關于系統嘀嗒時鐘SysTick的文件,但由于3.5版的固件庫較2.0版的庫,已經將SysTick相關的驅動函數移除,用戶要使用SysTick就必須改為調用CMSIS中的函數,而網上大多數的例程(包括《菜鳥學習手冊》)使用的都是2.0的庫,以至于在學習中遇到許多問題,程序編譯總會出現問題。一般都是“無法找到與SysTick相關的函數,函數未定義”錯誤。因此,查找了許多文獻才得以解決。

        本文引用地址:http://www.104case.com/article/201611/322898.htm

        SysTick定時器被捆綁在NVIC中,用于產生SysTick異常(異常號:15)。主要應用于操作系統,作為“嘀嗒中斷”維持操作系統“心跳”的節律。當然,SysTick定時器除了能服務于操作系統之外,還能用于其它目的:如作為一個鬧鈴,用于測量時間等。要注意的是,當處理器在調試期間被喊停(halt)時,則SysTick定時器亦將暫停運作。

        1.SysTick寄存器:

        寄存器

        說明

        地址

        CTRL

        SysTick控制和狀態寄存器

        0xE000E010

        LOAD

        Systick重裝值寄存器

        0xE000E014

        VAL

        Systick當前值寄存器

        0xE000E018

        CALIB

        SysTick校準值寄存器

        0xE000E01C

        lSysTick控制和狀態寄存器(SysTick_CTRL)

        說明:

        CLKSOURCE位:CM3允許為SysTick提供兩個時鐘源以供選擇。第一個是內核的“自由運行時鐘”FCLK。“自由”表現在它不來自系統時鐘HCLK,因此在系統時鐘停止時FCLK也繼續運行。第二個是一個外部的參考時鐘。但是使用外部時鐘時,因為它在內部是通過FCLK來采樣的,因此其周期必須至少是FCLK的兩倍(采樣定理)。很多情況下芯片廠商都會忽略此外部參考時鐘,因此通常不可用。

        COUNTFLAG位:當SysTick定時器從1計到0時,它將把COUNTFLAG位置位;而下述方法可以清零之:

        讀取SysTick控制及狀態寄存器(STCSR);

        往SysTick當前值寄存器(STCVR)中寫任何數據。

        lSysTick重裝值寄存器(SysTick_LOAD)


        說明:

        當計數器倒數至0時,使用SysTick_LOAD寄存器來指定載入“當前值寄存器”的初始值。初始值可以是1到0x00FFFFFF之間的任何值。


        上一頁 1 2 3 下一頁

        關鍵詞: STM32SysTick定時

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 三河市| 汝州市| 定陶县| 福安市| 德惠市| 察哈| 方山县| 阳春市| 新乐市| 建德市| 义马市| 马山县| 神木县| 陈巴尔虎旗| 隆子县| 吴堡县| 广汉市| 福贡县| 汕头市| 佛山市| 丹巴县| 诏安县| 呼和浩特市| 棋牌| 区。| 柳州市| 黄平县| 台江县| 霍林郭勒市| 桐庐县| 南京市| 图木舒克市| 嘉义县| 托克逊县| 天等县| 鸡东县| 略阳县| 岳普湖县| 安丘市| 开远市| 广河县|