【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输出原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 适用于渗透测试不同阶段的工具收集整理
- 下一篇: 论文笔记【A Comprehensive