有關於PWM關閉之後電平不一的問題

2021-10-09 00:04:27 字數 871 閱讀 1752

主控晶元:stm32f103rct6

程式設計軟體:keil5;sourseinsight4

串列埠除錯工具:xcom v2.5

在實際的使用過程中,我發現tim_cmd(timx, disable)僅僅只是關閉了pwm的產生,而並不是將pwm波拉低,pwm的高低決定於關閉前一刻電平的高低,因此,想要得到恆定的高電平或者低電平,可以考慮2種方法:

①利用tim_setcomparex()//x為通道編號,例如ch3通道x為3(x為通道編號,例如ch3通道x為3)將占空比調整到100%或者0%,這種方法無需關閉pwm,之後還可以調整占空比。

②關閉pwm並強制輸出高低電平,這種方法要關掉pwm,開啟pwm時需要重新使能通道以及pwm模式,但是不需要重新初始化tim。(此方法參考:stm32 pwm功能在關閉時gpio電平不確定的情況)

//關閉pwm並強制輸出低電平

tim_cmd

(tim4, disable)

;//關閉pwm

tim_forcedoc3config

(tim4, tim_forcedaction_inactive)

;//強制輸出低電平

//開啟tim4,ch3的pwm,並設定為pwm1模式

tim_selectocxm

(tim4, tim_channel_3, tim_ocmode_pwm1)

;tim_ccxcmd

(tim4, tim_channel_3, tim_ccx_enable)

;tim_cmd

(tim4, enable)

;

關閉PWM輸出之後的電平狀態

最近測試了stm32f103的pwm輸出,發現用關閉定時的方法關閉pwm之後狀態時高時低,不穩定,我想要的是低電平,後來用了庫函式tim ccxcmd tim4,tim channel 1,tim ccx disable 這個指令關閉後就一直是低電平了。在stm32f407裡面,用了hal庫,開始用...

STM8 關閉PWM輸出後的電平輸出問題解決

stm系列的微控制器pwm輸出如果被關斷比如用tim1 ctrlpwmoutputs進行停止輸出後,電平的高低處於不確定的狀態。他取決於 1.gpio初始化的特性 2.關斷那一刻時的電平 3.ccmr1的暫存器設定 因此要實現pwm關斷後的輸出確定比如輸出高電平必須 1.gpio的設定為推挽輸出或開...

STM32中關於高電平有效,低電平有效的一點理解

在學習stm32中的過程中,經常會遇到 高電平有效 低電平有效 等字眼,初看時很多時候就會從字面上理解,認為高電平有效的意思就是有效電平是高電平,低電平有效的意思就是有效電平是低電平的意思。而實際上,這樣的理解是有誤的。下面咱們以stm32的定時器中輸出比較通道為例 這幅圖實際上就是乙個pwm波產生...