STM32F207管腳對映配置PWM輸出筆記

2021-06-25 09:36:24 字數 1546 閱讀 2960

已親測,可以實現。

第一步:配置相關管腳輸出,比如我的是配置到pb9,使用的是定時器4的第四通道。

void pwm_gpio_config(void)

第二步:配置定時器。

2.配置定時器:首先是像51微控制器一樣需要給出定時器乙個初始值。而stm32的時鐘比51的複雜。我們的stm32的定時器4使用的是apb1的時鐘(使用apb1時鐘有tim2, tim3 , tim4 ,tim5 , tim6 ,tim7,tim12,tim13,tim14這些,最大頻率為60mhz。使用apb2時鐘的有tim1,tim8最大的頻率為120mhz)。

2-1:當我們想配置我們的時鐘頻率為20000000hz。我們就需要設定預分頻係數tim_prescaler ,從而使得高頻率降到我們需要的頻率。通過公式prescaler = (tim4clk / tim4 counter clock) - 1。我們的主時鐘為120mhz,apb1時鐘是主時鐘的2分頻為60mhz。所以tim4clk 是60mhz。我們需要的tim4 counter clock為20mhz,所以得出我們的預分頻係數prescaler 為2,這樣就可以取得tim4的時鐘輸入頻率為20mhz了。

2-2:我們已經獲得時鐘頻率,那麼如何設定才可以讓定時器出我們需要的定時呢?這個很簡單,就像我們的51微控制器一樣,有了定時器的時鐘,我們就知道他運算一次是多長時間,我們需要定時多久,就是要他執行多少次。舉個例子:我們需要0.5秒的定時,而我們的定時器時鐘為20mhz。那麼執行一次是1/20mhz=0.05us。所以我們定時0.5秒需要定時器執行0.5/0.05us=10000000次。那麼我們把計數暫存器(對於變數為tim_period )賦值為10000000,這樣定時器定時為0.5秒了。

在我們需要向定時器裡面填入初值,就可以設定頻率。

2-3:這裡還有乙個引數需要配置,就是計數的模式,這裡選擇是向上計數模式。通俗點講就是從0開始計數,計數到設定的初值tim_period 就產生乙個事件(終端或者其他)。

2-4:執行tim_timebaseinit(tim4, &tim_timebasestructure);到目前為止定時器已經配置好了。

第三步:設定pwm 

3-1.tim_ocinitstructure.tim_ocmode = tim_ocmode_pwm1;設定pwm模式(有pwm1和pwm2模式,兩個模式剛好相反)具體看《stm32中文參考手冊》。

3-2.配置tim_ocinitstructure.tim_outputstate = tim_outputstate_enable;以便和計數器比較產生pwm:

3-3.配置tim_ocinitstructure.tim_pulse = 333;//設定占空比; 占空比 = [tim_pulse/tim_period)* 100 = 50%。

3-4.配置tim_ocinitstructure.tim_ocpolarity = tim_ocpolarity_high;//設定有效極性,也就是設定比較輸出的有效

電平。詳細見**:

void time4_config(void)

STM32F207外部中斷實驗

stm32的每個io口都可以作為外部中斷輸入。gpiox.0對映到exti0,gpiox.1對映到exti1,同乙個時間只能有乙個io口對映到中斷線。對於每乙個中斷線,可以設定相應的觸發方式 上公升沿觸發 下降沿觸發 邊沿觸發 和使能。io外部中斷在中斷向量表中只分配了7個中斷向量,也就是只能使用7...

STM32F207下的實驗(1) CAN通訊基礎

can控制器通過兩根線上的電位差來判斷匯流排電平 can.h can.h include stm32f2xx.h ifndef can h define can h void can mode config u8 can bs1 xtq,u8 can bs2 ytq,u16 prescaler u8...

STM32 管腳 部分對映和全對映

在管腳對映的時候一定要記得開啟對映的時鐘rcc apb2periph afio 如下 rcc apb2periphclockcmd rcc apb2periph afio,enable gpio pinremapconfig gpio remap pd01,enable gpio pinremapc...