本文作者: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 下载相关芯片资料了 解细节。
|