STM32微控制器PWM輸出測試

2021-08-26 22:51:38 字數 1790 閱讀 4826

stm32微控制器pwm輸出測試

環境:

主機:xp

開發環境:mdk4.23

mcu:stm32f103cbt6

說明:

使用內部8m晶振,倍頻到64m供給tim3定時器,pa6(通道1)上產生640k,50%方波

源**:

初始化時鐘:

//初始化rcc時鐘

void init_rcc(void)

}

初始化io口和定時器:

//設定io口

rcc_apb2periphclockcmd(rcc_apb2periph_gpioa | rcc_apb2periph_afio, enable);

gpio_initstructure.gpio_pin = gpio_pin_6;

gpio_initstructure.gpio_mode = gpio_mode_af_pp;

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_init(gpioa, &gpio_initstructure);

//設定定時器3

rcc_apb1periphclockcmd(rcc_apb1periph_tim3,enable);

//重新將timer設定為預設值

tim_deinit(tim3);

//採用內部時鐘給tim3提供時鐘源

tim_internalclockconfig(tim3);

timinitstruct.tim_clockdivision = tim_ckd_div2;

timinitstruct.tim_prescaler = 0; //計數頻率為64m

timinitstruct.tim_countermode = tim_countermode_up; //向上計數

timinitstruct.tim_repetitioncounter = 0;

timinitstruct.tim_period = 100; //這個值實際上就是timx->arr,延時開始時重新設定即可

tim_timebaseinit(tim3, &timinitstruct);

//設定pwm輸出

tim_ocinitstructure.tim_ocmode = tim_ocmode_pwm1;

tim_ocinitstructure.tim_outputstate = tim_outputstate_enable;

tim_ocinitstructure.tim_pulse = 50;

tim_ocinitstructure.tim_ocpolarity = tim_ocpolarity_high;

tim_oc1init(tim3, &tim_ocinitstructure);

tim_oc1preloadconfig(tim3, tim_ocpreload_enable);

//arr預裝載緩衝器使能

tim_arrpreloadconfig(tim3, enable);

//開啟定時器

tim_cmd(tim3, enable);

輸出波形:

STM32微控制器PWM輸出學習

pwm原理 pwm表示脈衝寬度調製,它是一系列脈衝,這些脈衝將以方波的形式出現。也就是說,在任何給定的時間點,波型要麼是高電平或者是低電平。對於pwm訊號我們需要關注兩個與之相關的重要引數,乙個是pwm占空比,另乙個是pwm訊號的頻率。占空比 接通時間 接通時間 斷開時間 也就是說,通過控制從0 到...

stm32微控制器Pwm輸出對頻率,定時器的理解

32微控制器外接了乙個8m的晶振,經過9倍的倍頻後,pll鎖相環輸出72mhz的頻率。這即系統的主頻。定時器中 tim3 init u16 arr,u16 psc 這個初試函式中,arr是自動重裝載值,psc是可程式設計預分頻器。他們共同設定什麼時候該溢位 比如arr 899,psc 0 就表示沒有...

微控制器學習(一) 微控制器基礎 STM32

io四種輸入工作模式 io四種輸出工作模 stm32有8個16位定時器 stm32具有強大的異常響應系統,它把能夠打斷當前 執行流程的事件分為異常 exception 和中斷 interrupt 並把它們用乙個表管理起來,編號為 3 6的中斷向量定義為系統異常,編號從7到19的為外部中斷。中斷向量控...