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

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

|