stm32微控制器pwm輸出測試
環境:
主機:xp
開發環境:mdk4.23
mcu:stm32f103cbt6
說明:
使用內部8m晶振,倍頻到64m供給tim3定時器,pa6(通道1)上產生640k,50%方波
源**:
初始化時鐘:
初始化io口和定時器://初始化rcc時鐘
void init_rcc(void)
}
輸出波形://設定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的為外部中斷。中斷向量控...