STM32----摸石头过河系列(八)
在STM32中定時器(TIM)是很重要的外設,具有相當多的作用,并且用法多樣,內容多。今天來分析一下定時器的理論知識,沒有實例。
在STM32中定時可以分為三類:基本定時器、通用定時器、高級定時器。
一、基本定時器
計數器定時器TIMx_CNT,只能向上計數,重載寄存器TIMx_ARR中保存的是定時器的溢出值。TIMx_CNT由時鐘觸發進行計數,當計數器的值等于溢出值時,產生溢出事件觸發中斷或DMA請求。
二、通用定時器
通用定時器的主要用來對輸入脈沖的頻率的測量、脈沖寬度的測量、輸出PWM脈沖、還具有編碼器的接口。
利用GPIO引腳進行脈沖輸出,TIMx_CCR在配置比較輸出時,PWM輸出功能時TIMx_CCR被用作比較功能。若TIMx_CNT為向上計數,且TIMx_ARR配置為N,TIMx_CNT的值不斷增加,當TIMx_CNT的值大于N時,重置TIMx_CNT的值為0,并重新計數。
在TIMx_CNT計數時,計數值X與比較寄存器TIMx_CCR的值A進行比較。若X 小于A則輸出高電平(或低電平)。相反當脈沖計數器的值X大于或者等于A時輸出低電平(或高電平)。如此得到輸出脈沖的周期為TIMx_ARR存儲器的值(N+1)乘以觸發脈沖的時鐘周期,脈沖寬度則為TIMx_CCR的值A乘以觸發脈沖的時鐘周期,即輸出的PWM的占空比為A/(N+1)。
此時TIMx_CCR被用作捕獲功能。TIMx_CNT配置為向上計數,TIMx_ARR的值N足夠大。在輸入脈沖TI1的上升沿到達時,觸發IC1和IC2輸出捕獲中斷,TIMx_CNT值復位為0,TIMx_CNT自己增加,直到TI1出現下降沿觸發IC2捕獲事件,此時,TIMx_CRR2存儲TIMx_CNT當前值。TIMx_CNt繼續增加,當TI1出現第二個上升沿時,觸發IC1捕獲事件,TIMx_CCR1存儲當前TIMx_CNT的值。
正是因為TIMx_CCR的存在,才使得通用定時器的功能如此強大。定時器的內部時鐘都是TIMxCLK,但TIMxCLK的時鐘來源并不是完全一樣。TIM2~7基本定時器和通用定時器的時鐘都是APB1預分頻器的輸出。TIM1和TIM8兩個高級定時器的時鐘是APB2預分頻氣的輸出。
三、高級定時器
TIM1和TIM8是兩個高級定時器,他們具有基本通用定時器的所有功能,還具有三相6步電機的接口、剎車功能、以及用于PWM驅動電路的死區時間的控制,非常適合電機的控制。
死區時間,在H橋、三相橋的PWM驅動電路中,上下兩個橋的PWM驅動信號是互補的。即上下橋輪流導通,但實際上為了防止出現上下橋同時導通(會出現短路),在上下橋切換時,留下一段時間上下橋都施加關斷信號,上下橋都關斷的時間稱為死區時間。
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的STM32----摸石头过河系列(八)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纯Python模块发布setup脚本编写
- 下一篇: 岗位多多,招聘 23人 | 中国农业科学