欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STM32 PWM輸出總結
[打印本頁]
作者:
9geren
時間:
2014-3-26 14:41
標題:
STM32 PWM輸出總結
學習后發現
stm32
的定時器功能確實很強大
,
小總結一下方便以后使用的時候做參考。
Stm32
定時器一共分為三種:
tim1
和
tim8
是高級定時器,
6
和
7
是基本定時器,
2
—
5
是通用定時器。從名字就可以看得出來主要功能上的差異。今天我主要是用定時器做
pwm
輸出,所以總結也主要是針對
pwm
方面的。
先大致說下通用和高級定時器的區別。通用的可以輸出四路
pwm
信號互不影響。高級定時器可以輸出三對互補
pwm
信號外加
ch4
通道,也就是一共七路。
所以這樣算下來
stm32
一共可以生成
4*5+7*2=30
路
pwm
信號。接下來還有功能上的區別:通用定時器的
pwm
信號比較簡單,就是普通的調節占空比調節頻率(別的不常用到的沒去深究);高級定時器的還帶有互補輸出功能,同時互補信號可以插入死區,也可以使能剎車功能,從這些看來高級定時器的
pwm
天生就是用來控制電機的。
Pwm
輸出最基本的調節就是頻率和占空比。頻率當然又和時鐘信號扯上了關系。高級定時器是掛接到
APB2
上,而通用定時器是掛接到
APB1
上的。
APB1
和
APB2
的區別就要在于時鐘頻率不同。
APB2
最高頻率允許
72MH
,而
APB1
最高頻率為
36MHZ
。這樣是不是通用定時器只最高
36MHZ
頻率呢,不是的;通用定時器時鐘信號完整的路線應該是下面這樣的:
AHB
(
72mhz
)→
APB1
分頻器(默認
2
)
→
APB1
時鐘信號(
36mhz
)→
倍頻器(
*2
倍)
→通用定時器時鐘信號(
72mhz
)。
在
APB1
和定時器中間的倍頻器起到了巨大的作用,假如紅色字體的“
APB1
分頻器
”假如不為
1
(默認是
2
),倍頻器會自動將
APB1
時鐘頻率擴大
2
倍后作為定時器信號源,這個它內部自動控制的不用配置。設置這個倍頻器的目的很簡單就是在
APB1
是
36mhz
的情況下通用定時器的頻率同樣能達到
72mhz
。我用的庫函數直接調用函數
SystemInit();
這個函數之后時鐘配置好了:通用定時器和高級定時器的時鐘現在都是
72mhz
(你也可以自己再配置一下
RCC
讓他的頻率更低,但是不能再高了)。定時器接下來還有一個分頻寄存器:
TIMX_PSC
經過他的分頻后,才是定時器計數的頻率。所以真正的時鐘頻率應該是
72mhz/(TIMX_PSC-1)
,我們設為
tim_frepuency
下面還會用到。
stm32
的時鐘頻率弄得確實是很饒人的,所以關鍵就是先要把思路理清楚。時鐘的頻率弄好了下面終于可以開說重點
PWM
了。當然還少不了頻率:
pwm
主要就是控制頻率和占空比的:這兩個因素分別通過兩個寄存器控制:
TIMX_ARR
和
TIMX_CCRX
。
ARR
寄存器就是自動重裝寄存器,也就是計數器記到這個數以后清零再開始計,這樣
pwm
的頻率就是
tim_frequency/
(
TIMX_ARR-1
)。在計數時會不停的和
CCRX
寄存器中的數據進行比較,如果小于的話是高電平或者低電平,計數值大于
CCRX
值的話電平極性反相。所以這也就控制了占空比。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1