日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【STM32】PWM输出原理

發布時間:2024/3/7 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32】PWM输出原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

PWM模式的工作框架:

PWM模式的工作原理:

PWM庫函數配置:

1.初始化定時器輸出通道:TIM_OC2Init

2.設置比較值函數:TIM_SetComparex

3.使能預裝載寄存器:void TIM_OC2PreloadConfig


PWM模式的工作框架:

PWM模式的工作原理:

由之前的定時器中斷實驗知道,定時器內部有一個記錄定時器當前值的寄存器CNT和一個記錄定時器自動重裝載值的寄存器ARR,而在PWM工作模式下,我們依然利用這兩個定時器來記錄時間,不同的是多引入一個寄存器CCRx,這個寄存器用于控制PWM輸出波的有效電平長度、引入CCMRx寄存器來控制PWM模式、引入寄存器CCERx:CC1P位控制輸出電平極性。

PWM模式可以控制當計數器的值小于CCRx寄存器設定的值時輸出的是有效電平還是無效電平,

  • 在PWM模式1下,我們控制凡是小于CCRx寄存器數值的電平都是有效電平,無論是向上計數還是向下計數;
  • PWM模式2下,我們控制凡是小于CCRx寄存器數值的電平都是無效電平,無論是向上計數還是向下計數;

下面以PWM模式1為例:當計數器小于CCRx數值時,輸出的為有效的電平,例如上圖中,我們通過控制寄存器CCERx:CC1P位讓有效電平為低電平,所以當計數器小于寄存器CCRx設定的數值時,輸出的為有效的低電平。當計數器大于CCRx設定的值時,輸出無效的高電平。

PWM庫函數配置:

PWM實驗的配置步驟如下:

  • 初始化定時器時鐘和輸出GPIO的時鐘;
  • GPIO的初始化;
  • 定時器初始化;
  • 定時器輸出通道參數初始化;
  • 定時器使能;
  • 預裝載寄存器使能;

1.初始化定時器輸出通道:TIM_OC2Init

TIM_OC2Init(TIM3, &TIM_OCInitStructure);

這個函數用于初始化PWM模式下定時器輸出的模式和相應參數的選擇。它有兩個參數,第一個是要初始化的定時器,第二個是選擇定時器的輸出模式的結構體指針:

uint16_t TIM_OCMode; uint16_t TIM_OutputState; uint16_t TIM_OutputNState; uint16_t TIM_Pulse; uint16_t TIM_OCPolarity; uint16_t TIM_OCNPolarity; uint16_t TIM_OCIdleState; uint16_t TIM_OCNIdleState;

它有8個成員,而在我們PWM輸出的實驗中,我們只需要去配置它的4個成員:

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OCInitStructure.TIM_Pulse

第一個是TIM_OCInitStructure.TIM_OCMode,它是選擇PWM模式,即控制CCMRx寄存器的結構體成員;

第二個是TIM_OCInitStructure.TIM_OutputState,它是選擇是否使能通道的成員;

第三個是TIM_OCInitStructure.TIM_OCPolarity,它是配置CCERx寄存器,即控制有效電平的極性的成員;

第四個是TIM_OCInitStructure.TIM_Pulse,它是配置CCRx寄存器的數值,這個我們可以不使用,因為后面有函數可以配置它。

2.設置比較值函數:TIM_SetComparex

void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2)

這個函數有兩個參數,第一個參數是要設置的定時器,第二個參數是新的比較值,即CCRx寄存器的配置函數;

3.使能預裝載寄存器:void TIM_OC2PreloadConfig

void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)

這個函數用于使能預裝載寄存器,即使能CCRx預裝載寄存器的函數,即驅動CCRx寄存器工作的函數。它也有兩個參數,第一個是定時器序號,第二個是定時器的預裝載寄存器的使能。

總結

以上是生活随笔為你收集整理的【STM32】PWM输出原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。