<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32學(xué)習筆記(5):通用定時(shí)器PWM輸出

STM32學(xué)習筆記(5):通用定時(shí)器PWM輸出

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏
1.TIMER輸出PWM基本概念

本文引用地址:http://dyxdggzs.com/article/201611/322602.htm

脈沖寬度調制(PWM),是英文“Pulse Width Modulation”的縮寫(xiě),簡(jiǎn)稱(chēng)脈寬調制,是利用微處理器的數字輸出來(lái)對模擬電路進(jìn)行控制的一種非常有效的技術(shù)。簡(jiǎn)單一點(diǎn),就是對脈沖寬度的控制。一般用來(lái)控制步進(jìn)電機的速度等等。

STM32的定時(shí)器除了TIM6和TIM7之外,其他的定時(shí)器都可以用來(lái)產(chǎn)生PWM輸出,其中高級定時(shí)器TIM1和TIM8可以同時(shí)產(chǎn)生7路的PWM輸出,而通用定時(shí)器也能同時(shí)產(chǎn)生4路的PWM輸出。

1.1PWM輸出模式

STM32的PWM輸出有兩種模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位確定的(“110”為模式1,“111”為模式2)。模式1和模式2的區別如下:

110:PWM模式1-在向上計數時(shí),一旦TIMx_CNT時(shí)通道1為有效電平,否則為無(wú)效電平;在向下計數時(shí),一旦TIMx_CNT>TIMx_CCR1時(shí)通道1為無(wú)效電平(OC1REF=0),否則為有效電平(OC1REF=1)。

111:PWM模式2-在向上計數時(shí),一旦TIMx_CNT時(shí)通道1為無(wú)效電平,否則為有效電平;在向下計數時(shí),一旦TIMx_CNT>TIMx_CCR1時(shí)通道1為有效電平,否則為無(wú)效電平。

由此看來(lái),模式1和模式2正好互補,互為相反,所以在運用起來(lái)差別也并不太大。

而從計數模式上來(lái)看,PWM也和TIMx在作定時(shí)器時(shí)一樣,也有向上計數模式、向下計數模式和中心對齊模式,關(guān)于3種模式的具體資料,可以查看《STM32參考手冊》的“14.3.9 PWM模式”一節,在此就不詳細贅述了。

1.2PWM輸出管腳

PWM的輸出管腳是確定好的,具體的引腳功能可以查看《STM32參考手冊》的“8.3.7定時(shí)器復用功能重映射”一節。在此需要強調的是,不同的TIMx有分配不同的引腳,但是考慮到管腳復用功能,STM32提出了一個(gè)重映像的概念,就是說(shuō)通過(guò)設置某一些相關(guān)的寄存器,來(lái)使得在其他非原始指定的管腳上也能輸出PWM。但是這些重映像的管腳也是由參考手冊給出的。比如說(shuō)TIM3的第2個(gè)通道,在沒(méi)有重映像的時(shí)候,指定的管腳是PA.7,如果設置部分重映像之后,TIM3_CH2的輸出就被映射到PB.5上了,如果設置了完全重映像的話(huà),TIM3_CH2的輸出就被映射到PC.7上了。

1.3PWM輸出信號

PWM輸出的是一個(gè)方波信號,信號的頻率是由TIMx的時(shí)鐘頻率和TIMx_ARR預分頻器所決定的,具體設置方法在前面一個(gè)學(xué)習筆記中有詳細的交代。而輸出信號的占空比則是由TIMx_CRRx寄存器確定的。其公式為“占空比=(TIMx_CRRx/TIMx_ARR)*100%”,因此,可以通過(guò)向CRR中填入適當的數來(lái)輸出自己所需的頻率和占空比的方波信號。

2.TIMER輸出PWM實(shí)現步驟

1.設置RCC時(shí)鐘;

2.設置GPIO時(shí)鐘;

3.設置TIMx定時(shí)器的相關(guān)寄存器;

4.設置TIMx定時(shí)器的PWM相關(guān)寄存器。

第1步設置RCC時(shí)鐘已經(jīng)在前文中給出了詳細的代碼,在此就不再多說(shuō)了。需要注意的是通用定時(shí)器TIMx是由APB1提供時(shí)鐘,而GPIO則是由APB2提供時(shí)鐘。注意,如果需要對PWM的輸出進(jìn)行重映像的話(huà),還需要開(kāi)啟引腳復用時(shí)鐘AFIO。

第2步設置GPIO時(shí)鐘時(shí),GPIO模式應該設置為復用推挽輸出GPIO_Mode_AF_PP,如果需要引腳重映像的話(huà),則需要用GPIO_PinRemapConfig()函數進(jìn)行設置。

第3步設置TIMx定時(shí)器的相關(guān)寄存器時(shí),和前一篇學(xué)習筆記一樣,設置好相關(guān)的TIMx的時(shí)鐘和技術(shù)模式等等。具體設置參看“TIMER基本定時(shí)功能”的學(xué)習筆記。

第4步設置PWM相關(guān)寄存器,首先要設置PWM模式(默認情況下PWM是凍結的),然后設置占空比(根據前面所述公式進(jìn)行計算),再設置輸出比較極性:當設置為High時(shí),輸出信號不反相,當設置為L(cháng)ow時(shí),輸出信號反相之后再輸出。最重要是是要使能TIMx的輸出狀態(tài)和使能TIMx的PWM輸出使能。

相關(guān)設置完成之后,就可以通過(guò)TIM_Cmd()來(lái)打開(kāi)TIMx定時(shí)器,從而得到PWM輸出了。

3.TIMER輸出PWM源代碼

由于我現在手上的奮斗開(kāi)發(fā)板是將PB.5接到LED上,因此需要使用TIM3的CH2通道,并且要進(jìn)行引腳重映像。打開(kāi)TIM3之后,PWM輸出,使得LED點(diǎn)亮,通過(guò)改變PWM_cfg()中的占空比可以調節LED的亮度。

#include "stm32f10x_lib.h"

void RCC_cfg();

void GPIO_cfg();

void TIMER_cfg();

void PWM_cfg();

//占空比,取值范圍為0-100

int dutyfactor = 50;

int main()

{

int Temp;

RCC_cfg();

GPIO_cfg();

TIMER_cfg();

PWM_cfg();

//使能TIM3計時(shí)器,開(kāi)始輸出PWM

TIM_Cmd(TIM3, ENABLE);

while(1);

}

void RCC_cfg()

{

//定義錯誤狀態(tài)變量

ErrorStatus HSEStartUpStatus;

//將RCC寄存器重新設置為默認值

RCC_DeInit();

//打開(kāi)外部高速時(shí)鐘晶振

RCC_HSEConfig(RCC_HSE_ON);


上一頁(yè) 1 2 下一頁(yè)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>