PWM輸出學習筆記

脈沖寬度調(diào)制(PWM)翅敌,是英文“Pulse Width Modulation”的縮寫羞福,簡稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù)蚯涮。簡單一點治专,就是對脈沖寬度的控制。調(diào)整PWM的周期遭顶、PWM的占空比而達到控制充電電流的目的.

老規(guī)矩张峰,先讓我們來看pwm.c中的源碼:

#include "pwm.h"

#include "led.h"

 

 

//PWM輸出初始化

//arr:自動重裝值

//psc:時鐘預分頻數(shù)

void TIM1_PWM_Init(u16 arr,u16 psc)

{  

          GPIO_InitTypeDef GPIO_InitStructure;

         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

         TIM_OCInitTypeDef  TIM_OCInitStructure;

 

         RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //使能GPIO外設(shè)時鐘使能

                                                                               
   //設(shè)置該引腳為復用輸出功能,輸出TIM,CH1的PWM脈沖波形

         GPIO_InitStructure.GPIO_Pin= GPIO_Pin_8; //TIM_CH1

         GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP;  //復用推挽輸出

         GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;

         GPIO_Init(GPIOA,&GPIO_InitStructure);      

         TIM_TimeBaseStructure.TIM_Period=arr;//設(shè)置在下一個更新事件裝入活動的自動重裝載寄存器周期的值         80K

         TIM_TimeBaseStructure.TIM_Prescaler=psc;//設(shè)置用來作為TIMx時鐘頻率除數(shù)的預分頻值   不分頻

         TIM_TimeBaseStructure.TIM_ClockDivision= 0; //設(shè)置時鐘分割:TDTS = Tck_tim

         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;  //TIM向上計數(shù)模式

         TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位

 

 

         TIM_OCInitStructure.TIM_OCMode= TIM_OCMode_PWM2; //選擇定時器模式:TIM脈沖寬度調(diào)制模式2

         TIM_OCInitStructure.TIM_OutputState= TIM_OutputState_Enable; //比較輸出使能

         TIM_OCInitStructure.TIM_Pulse= 0; //設(shè)置待裝入捕獲比較寄存器的脈沖值

         TIM_OCInitStructure.TIM_OCPolarity= TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高

         TIM_OC1Init(TIM1,&TIM_OCInitStructure);  //根據(jù)TIM_OCInitStruct中指定的參數(shù)初始化外設(shè)TIMx


         TIM_CtrlPWMOutputs(TIM1,ENABLE);     //MOE 主輸出使能
         TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);  //CH1預裝載使能 
         TIM_ARRPreloadConfig(TIM1,ENABLE); //使能TIMx在ARR上的預裝載寄存器
         TIM_Cmd(TIM1,ENABLE);  //使能TIM1

}

這里我們要配置PA8為復用輸出棒旗,這是因為TIM1_CH1通道將使用PA8的復用功能作為輸出挟炬。

首先,我要介紹一下占空比:

占空比是PWM的最重要的參數(shù)

8位的PWM是0-255(2^8)嗦哆,比如用PWM控制一個電源正極的開關(guān)當PWM頻率足夠高的時候,開關(guān)后的電壓是 = 電壓占空比比如你用5V電源婿滓,用一個MOS管控制電源輸出的話給MOS管30%的占空比老速,那么就是輸出5V30%的電壓

然后再說說怎么實現(xiàn)這個占空比。8位的定時器凸主,如果做PWM橘券,要輸出30%的占空比,那么定時器從0~255*30%的計數(shù)值內(nèi)(也就是76內(nèi))要輸出高電平卿吐。然后比較當前的計數(shù)值跟76旁舰,計數(shù)值小于76就輸出高電平,大于76的時候就輸出低電平嗡官。

再讓我們來看一下TIM_TimeBaseStructure這個結(jié)構(gòu)體的各個成員

typedef struct

{

uint16_t TIM_OCMode;

uint16_tTIM_OutputState;  

uint16_t TIM_OutputNState;*/

uint16_tTIM_Pulse;         

uint16_tTIM_OCPolarity;    

uint16_tTIM_OCNPolarity;   

uint16_tTIM_OCIdleState;  

uint16_tTIM_OCNIdleState;  

}TIM_OCInitTypeDef;

參數(shù)TIM_OCMode設(shè)置模式是PWM還是輸出比較箭窜,這里我們是PWM模式。(PWM有兩種模式衍腥,一種是向上計數(shù)磺樱,一種是向下計數(shù))

參數(shù)TIM_OutputState用來設(shè)置比較輸出使能纳猫,也就是使能PWM輸出到端口。(用計數(shù)值和用占空比計算得到的數(shù)進行比較竹捉,這里用上面提到的76舉例芜辕,就是比較計數(shù)值與76的大小,根據(jù)下面TIM_OCPolarity定義的值判斷块差,大于76時輸出高電平還是小于76時輸出低電平侵续,所以使能輸出比較結(jié)果,就是允許輸出PWM)

參數(shù)TIM_OCPolarity用來設(shè)置極性是高還是低憨闰。(取值為TIM_OCPolarity_High時状蜗,計數(shù)值比76小時定義為高電平,比76大時定義為低電平起趾,取值為TIM1_OCPolarity_Low時相反)

其他參數(shù) TIM_OutputNState 诗舰,TIM_OCNPolarity , TIM_OCIdleState 和 TIM_OCNIdleState 是高級定時器TIM1和TIM8才用到的训裆。

這里我們只要使用通用定時器的功能眶根,所以沒有必要初始化這些成員。

配置好了之后用TIM_OC1Init(TIM1,&OCInitStructure)函數(shù)初始化TIM1 OC1;

如果是高級定時器边琉,則還需要配置:剎車和死區(qū)寄存器(TIMx_BDTR)属百,該寄存器,我們只需要關(guān)注最高位:MOE位变姨,要想高級定時器的PWM正常輸出族扰,則必須設(shè)置MOE位為1,否則不會有輸出定欧。注意:通用定時器不需要配置這個渔呵。其他位我們這里就不多說。

接下來的三個使能還是要看定時器結(jié)構(gòu)的

1.jpg

如上圖砍鸠,這里我就不多說了扩氢。

最后我要解釋一下關(guān)于為什么LED是漸變的,雖然TIM1計數(shù)器中的計數(shù)值要與76比較爷辱,但是這一個周期的時間十分短暫录豺,導致低電平時間過短,達到人眼無法分辨的頻率饭弓,所以我們覺得LED一直是亮著的双饥,這個時候決定LED變化的只有主函數(shù)中最后一段代碼中的函數(shù)TIM_SetCompare1(TIM1,led0pwmval)中的led0pwmval這個參數(shù)決定的占空比,從而影響電壓進而影響電流大小弟断,最后導致了LED的亮度的改變咏花。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夫嗓,隨后出現(xiàn)的幾起案子迟螺,更是在濱河造成了極大的恐慌冲秽,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矩父,死亡現(xiàn)場離奇詭異锉桑,居然都是意外死亡,警方通過查閱死者的電腦和手機窍株,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門民轴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人球订,你說我怎么就攤上這事后裸。” “怎么了冒滩?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵微驶,是天一觀的道長。 經(jīng)常有香客問我开睡,道長因苹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任篇恒,我火速辦了婚禮扶檐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胁艰。我一直安慰自己款筑,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布腾么。 她就那樣靜靜地躺著奈梳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪解虱。 梳的紋絲不亂的頭發(fā)上颈嚼,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音饭寺,去河邊找鬼。 笑死叫挟,一個胖子當著我的面吹牛艰匙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抹恳,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼员凝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奋献?” 一聲冷哼從身側(cè)響起健霹,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤旺上,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后糖埋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣吱,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年瞳别,在試婚紗的時候發(fā)現(xiàn)自己被綠了征候。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡祟敛,死狀恐怖疤坝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情馆铁,我是刑警寧澤跑揉,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站埠巨,受9級特大地震影響历谍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乖订,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一扮饶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乍构,春花似錦甜无、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至眠饮,卻和暖如春奥帘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仪召。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工寨蹋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扔茅。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓已旧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親召娜。 傳聞我的和親對象是個殘疾皇子玲销,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • STM32F103一共有11個定時器扇丛,其中: 2個高級定時器 4個普通定時器 2個基本定時器 2個看門狗定時器 1...
    追夢Y少年閱讀 910評論 0 1
  • 脈沖寬度調(diào)制(PWM)伏社,是英文“Pulse Width Modulation”的縮寫瞳步,簡稱脈寬調(diào)制,是利用微處理器...
    X_xxieRiemann閱讀 6,577評論 1 13
  • 姓名:周崇杰 學號:16040120059 專業(yè):機械設(shè)計制造及其自動化 轉(zhuǎn)載自:http://blog.csd...
    CJbaby閱讀 1,050評論 0 0
  • 時間它一直向前走,沒有盡頭只有路口。 2016的最后一天,去看了《擺渡人》弧可,雖然豆瓣很多差評,電影里面的嘻哈風以及...
    五月成長筆記閱讀 279評論 0 1
  • 曾經(jīng)我愛你文虏,你嫌棄我的漏洞百出侣诺;現(xiàn)在我成了滴水不漏的女子,可你拿什么來愛我氧秘。 --by 夏傾城年鸳。 直到現(xiàn)在,這徽城...
    余布繭閱讀 376評論 0 0