STM32神舟III號 驅動直流電機學習(二)

2021-06-26 20:42:38 字數 1940 閱讀 1861

看到一篇講pwm講得比較詳細的stm32的pwm精講

實驗內容:利用stm32的乙個通用定時器(tim2)產生4路頻率相同(1khz)占空比不同的

pwm。ch1占空比75%,ch2占空比50%,ch3占空比25%,ch4占空比10%。四路

輸出分別對應pa埠的pa0,pa1,pa2,pa3。

實驗目的:掌握通用定時器的基本應用。(

pwm的頻率和占空比的計算)

stm32的定時器是個強大的模組,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做

pwm輸出

或者輸入捕獲功能。

補充乙個前期時鐘源問題:

名為timx的定時器有8個,其中tim1和tim8掛在apb2匯流排上,而tim2-tim7則掛在apb1匯流排上。其中tim1&tim8稱為高階控制定時器. apb2可以工作在72mhz下,而apb1最大是36mhz。

定時器的時鐘不是直接來自apb1或apb2,而是來自於輸入為apb1或apb2的乙個倍頻器。(這個問題納悶了好久才找到的,主要是沒有在意時鐘樹,唉!)

下面以定時器2~7的時鐘說明這個倍頻器的作用:當apb1的預分頻係數為1時,這個倍頻器不起作用,定時器的時鐘頻率等於apb1的頻率;當apb1的預分頻係數為其它數值(即預分頻係數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等於apb1的頻率兩倍。

假定ahb=36mhz,因為apb1允許的最大頻率為36mhz,所以apb1的預分頻係數可以取任意數值;當預分頻係數=1時,apb1=36mhz,tim2~7的時鐘頻率=36mhz(倍頻器不起作用);當預分頻係數=2時,apb1=18mhz,在倍頻器的作用下,tim2~7的時鐘頻率=36mhz。

有人會問,既然需要tim2~7的時鐘頻率=36mhz,為什麼不直接取apb1的預分頻係數=1?答案是:apb1不但要為tim2~7提供時鐘,而且還要為其它外設提供時鐘;設定這個倍頻器可以在保證其它外設使用較低時鐘頻率時,tim2~7仍能得到較高的時鐘頻率。

再舉個例子:當ahb=72mhz時,apb1的預分頻係數必須大於2,因為apb1的最大頻率只能為36mhz。如果apb1的預分頻係數=2,則因為這個倍頻器,tim2~7仍然能夠得到72mhz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的解析度,這也正是設計這個倍頻器的初衷。

一下是定時器的配置**:

/*使用乙個定時器產生4路不同占空比的

pwm波型 */

void timer_init(void)

一下說一下

pwm頻率的計算問題:

分頻值=tim_timebasestructure.tim_prescaler +1,所以如果要分360分頻,只要將tim_prescaler=359即可。

//定時器2 設定 360分頻 1khz 向上計數 

tim_timebasestructure.tim_period =199; //1khz,16位的值,最大65536

tim_timebasestructure.tim_prescaler =359; //360分頻 即為200khz,16位的值,最大65536

pwm頻率(1khz)=tim2時鐘/( tim_prescaler+1)*(tim_period+1);所以:tim2時鐘=72m;tim_period =199; tim_prescaler =359。

效果圖:  

通道1、2

通道3、4

STM32神舟III號 驅動直流電機學習(四 )

怎樣 檢視輸出pwm波 怎樣設定pwm頻率 參考stm32神舟iii號 驅動直流電機學習 二 電機型號 rs 385ph,電機正負極區分 冷色系顏色為負極,暖色系顏色為正極 如何控制與計算轉速 通過白色與藍色的線實現四倍頻上下沿,計算直流電機轉速。參考網頁 利用邊沿檢測電路檢測是否可行?新手入門比較...

linux spi驅動分析 基於STM32

linux kernel 版本2.6.30,spi驅動基於platform device,platform driver驅動模型來編寫.spi分為主從裝置,乙個主裝置下可心掛接多個從裝置,linux驅動中使用struct spi master結構來表示乙個主裝置,使用struct spi devic...

stm32用pwm驅動舵機

舵機的主要組成部分為伺服電機,所謂伺服就是服從訊號的要求而動作。在訊號來之前,轉子停止不動 訊號來到之後,轉子立即運動。因此我們就可以給舵機輸入不同的訊號,來控制其旋轉到不同的角度。舵機接收的是pwm訊號,當訊號進入內部電路產生乙個偏置電壓,觸發電機通過減速齒輪帶動電位器移動,使電壓差為零時,電機停...