本文作者:Miler Shao 凡閱讀過STM32參考手冊定時器資料的人可能多少覺得它的龐大和復雜,不過這里不對其工作原理做介紹,只是對STM32MCU中各類定時器做個基本的框架性介紹。 我們知道,STM32系列MCU都是基于ARM核心處理器而設計出來的微處理器芯片,芯片可以簡單地看成由ARM 內核處理器加上ST公司設計的各類外設組成。其中,ST公司設計的外設中就有各種定時器。這些STM32 MCU外設定時器一般可以分為16位的、32位,外加2個看門狗、RTC特殊定時器,定時器數量往往較多。其中16位、32位定時器按照功能特性又可分為通用定時器、高級定時器、基本定時器,此外,不少低功耗STM32系列還有低功耗定時器。 這里選擇比較有代表性的STM32L476xx芯片來認識下這些定時器。

上面表格羅列了三類定時器,給出了定時器的寬度,計數模式,捕捉比較通道數等。 基本定時器【basic timer】:實現定時器最基本的計數、定時功能。 通用定時器【General purpose】:在基本定時器的基本功能前提下,增加了對外輸入捕捉或比較輸出功能,但不能實現用于馬達應用的三對互補輸出。 高級定時器【advanced timer】:在通用定時器的功能前提下,增加了基于三相馬達驅動的三對互補輸出,帶死區應用和剎車管理。這樣的話,一個STM32高級定時器最多可以同時實現7路PWM輸出。 低功耗定時器:【low power timer】:從功耗角度來界定的,該類定時器可以工作在低功耗的STOP模式并具有MCU喚醒功能。它的時鐘一般來說跟上面三類不一樣。 STM32 MCU片內除了上面提到的幾類定時器外,還有些特定應用功能的定時器,比如看門狗定時器,RTC定時器。 上面提到的外設定時器都屬于ST公司設計的,還有個來自于ARM CORTEX處理器內部的定時器,SYSTICK定時器.
前面說過,STM32 MCU芯片由ARM處理器與ST外設模塊組成,而ARM處理器由內核和處理器外設組成。下圖是ARM Cortex M4處理器的框圖: 比方我們熟知的NVIC、FPU、MPU、調試組件、SYSTICK等都是屬于核處理器外設。其中SYSTICK就是個24位向下計數的定時器。在STM32應用產品上用過RTOS的人可能清楚,往往用這個SYSTICK定時器作為系統滴答節拍。
有人說STM32的芯片參考手冊上沒有對SYSTICK定時器的描述,的確是這樣。SYSTICK定時器是ARM處理器里面的東西,詳細描述自然非ARM莫屬。類似NVIC、FPU、MPU、SYSTICK等ARM內核外設,在ARM公司提供的Cortex-Mx內核參考手冊里有描述。網上有很多熱心人也做了詳細中文描述。
另外,STM32 MCU的低功耗芯片里除了有低功耗定時器【LP TIMER】外,還有低功耗UART【LP UART】。目前STM32L0和STM32L4系列里有LP TIMER和LP UART,有興趣的話可以去www.stmcu.com.cn或www.st.com/mcu 下載相關芯片資料了 解細節。

|