STM8S---定時(shí)器產(chǎn)生PWM(TIM2)
采用STM8S內(nèi)部時(shí)鐘(HSI);
PWM模式2;
占空比為50%,頻率為2Hz(方便測(cè)試LED燈);
PD2口外接LED燈,PD2口輸出PWM波;
系統(tǒng)時(shí)鐘初始化很重要:CLK_CKDIVR|=0x08;
/*
TIM2_CH3 PWM
PD2 output
*/
#include
void CLK_init(void)
{
CLK_ICKR |= 0X01; //使能內(nèi)部高速時(shí)鐘 HSI
CLK_CKDIVR |= 0x08; //16M內(nèi)部RC經(jīng)2分頻后系統(tǒng)時(shí)鐘為8M
while(!(CLK_ICKR&0x02)); //HSI準(zhǔn)備就緒
CLK_SWR=0xe1; //HSI為主時(shí)鐘源
}
void Init_Tim2(void)
{
TIM2_CCMR3 |= 0X70; //設(shè)置定時(shí)器2三通道(PD2)輸出比較三模式
TIM2_CCMR3 |= 0X04; //輸出比較3預(yù)裝載使能
TIM2_CCER2 |= 0x03; //通道3使能,低電平有效,配置為輸出
//初始化時(shí)鐘分頻器為1,即計(jì)數(shù)器的時(shí)鐘頻率為Fmaster=8M/64=0.125MHZ
TIM2_PSCR = 0X06;
//初始化自動(dòng)裝載寄存器,決定PWM 方波的頻率,F(xiàn)pwm=0.125M/62500=2HZ
TIM2_ARRH = 62500/256;
TIM2_ARRL = 62500%256;
//初始化比較寄存器,決定PWM 方波的占空比:5000/10000 = 50%
TIM2_CCR3H = 31250/256;
TIM2_CCR3L = 31250%256;
// 啟動(dòng)計(jì)數(shù);更新中斷失能
TIM2_CR1 |= 0x81;
//TIM2_IER |= 0x00;
}
void Init_GPIO(void)
{
/*設(shè)置為推挽輸出,PD2接了LED燈*/
PD_DDR |= 0X04; //設(shè)置PD2端口為輸出模式
PD_CR1 |= 0X04; //設(shè)置PD2端口為推挽輸出模式
PD_CR2 &= 0XFD;
PA_DDR |= 0X08; //設(shè)置PA3端口為輸出模式
PA_CR1 |= 0X08; //設(shè)置PA3端口為推挽輸出模式
PA_CR2 |= 0XF7;
}
void main(void)
{
CLK_init();
Init_GPIO();
Init_Tim2();
while (1);
}