当前位置:首页 > 单片机 > 单片机
[导读] 1 说明采用STM8S内部时钟(HSI);PWM模式2;占空比为50%,频率为2Hz(方便测试LED灯);PD2口外接LED灯,PD2口输出PWM波;系统时钟初始化很重要:CLK_CKDIVR|=0x08;2 代码/*TIM2_CH3 PWMPD2 output*/#inc

1 说明
  • 采用STM8S内部时钟(HSI);

  • PWM模式2;

  • 占空比为50%,频率为2Hz(方便测试LED灯);

  • PD2口外接LED灯,PD2口输出PWM波;

  • 系统时钟初始化很重要:CLK_CKDIVR|=0x08;

2 代码


/*

TIM2_CH3 PWM

PD2 output

*/

#include


void CLK_init(void)

{

CLK_ICKR |= 0X01; //使能内部高速时钟 HSI

CLK_CKDIVR |= 0x08; //16M内部RC经2分频后系统时钟为8M

while(!(CLK_ICKR&0x02)); //HSI准备就绪

CLK_SWR=0xe1; //HSI为主时钟源

}


void Init_Tim2(void)

{

TIM2_CCMR3 |= 0X70; //设置定时器2三通道(PD2)输出比较三模式

TIM2_CCMR3 |= 0X04; //输出比较3预装载使能


TIM2_CCER2 |= 0x03; //通道3使能,低电平有效,配置为输出


//初始化时钟分频器为1,即计数器的时钟频率为Fmaster=8M/64=0.125MHZ

TIM2_PSCR = 0X06;

//初始化自动装载寄存器,决定PWM 方波的频率,Fpwm=0.125M/62500=2HZ

TIM2_ARRH = 62500/256;

TIM2_ARRL = 62500%256;

//初始化比较寄存器,决定PWM 方波的占空比:5000/10000 = 50%

TIM2_CCR3H = 31250/256;

TIM2_CCR3L = 31250%256;



// 启动计数;更新中断失能

TIM2_CR1 |= 0x81;

//TIM2_IER |= 0x00;

}


void Init_GPIO(void)

{

/*设置为推挽输出,PD2接了LED灯*/

PD_DDR |= 0X04; //设置PD2端口为输出模式

PD_CR1 |= 0X04; //设置PD2端口为推挽输出模式

PD_CR2 &= 0XFD;


PA_DDR |= 0X08; //设置PA3端口为输出模式

PA_CR1 |= 0X08; //设置PA3端口为推挽输出模式

PA_CR2 |= 0XF7;

}


void main(void)

{

CLK_init();

Init_GPIO();

Init_Tim2();

while (1);

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭