## 基於stm32定時器的不同頻率輸出(小白第一次發自己的理解,希望大佬多多指教)

基於stm32定時器的不同頻率輸出(小白第一次發自己的理解,希望大佬多多指教)

**

針對於stm32的定時器,相信很多剛接觸到的小白可能會覺得很簡單,包括自己實踐用了定時器去完成顯示實時時間、pwm輸出、pwm捕獲等一些功能,但是在學這個的一開始,肯定有說過定時器使用時先分頻!(當然使用的是自己的板子上的晶振),然後能夠有四路輸出/捕獲,可是這四路不都還是在同一個頻率下工作的嗎!?那麼現在如果我其他的定時器都有用,只剩下一個定時器,可是我還需要輸出不同頻率的pwm,怎麼辦!?,也是我昨天看別人的視頻再加上從百度上搜了搜,發現解決的辦法有大佬已經寫了,直接上的源碼,我這裏就是對大佬的源碼再做解釋罷了。不廢話了

首先就是輸出pwm,那麼我們肯定要初始化TIM_TimeBaseStructure和TIM_OCInitStructure裏面的一些變量,那麼與平常不同的是,在TIM_TimeBaseStructure裏面period一般我們都會選自己想要記到的數來決定週期(週期=period*【prescaler/時鐘晶振】),那麼頻率=1/週期,這個相信大家都明白,那麼現在我們需要改變頻率,也就是改變週期,首先計數這裏要記到65535(也就是最大值0xfff)
還是直接上源碼解釋~~注 我用的是F103RBT6的板子,TIM2,通道二、三給大家舉的例子
在這裏插入圖片描述
需要注意的地方我給大家畫上了,然後第一個劃重點的地方具體是爲什麼65535我也沒再去查,然後在輸出模式那裏!!一般我們都會選擇pwm1或者pwm2,但是那都是起於原始頻率,既然咱們要做到不同頻率,所以這個模式就更改爲比較觸發模式(個人理解其實就是溢出之後要取反),那麼他就要自己去修改存在ccr1寄存器中的值,所以也就是爲什麼要讓ccr1失能了
在這裏插入圖片描述
先得到原來的計數週期,再加上自己想要得到的,公式在圖片上寫了,其中晶振就是你分完頻得到的晶振頻率。 再具體一點的話就是 先計數,計數到了之後翻轉電平進入中斷,然後得到這次計數值,將自動裝載寄存器的值寫進去ccr1,然後等待下一次計數完成,因爲一個週期有高電平低電平,所以翻轉兩次纔是一個週期,所以就是爲什麼500*2,emm就這麼多吧,更深層次的理解我還沒有那個水平,然後留下我qq吧1015188236,希望和大家共同進步共同學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章