新闻| 论坛| 博客| 在线研讨会
STM8L101 TIM2 PWM1模式 使用
电子禅石| 2017-04-07 10:44:21 阅读:10597 发布文章

使用STM8L101F3P6

驱动蜂鸣器:滴滴 两下,然后关闭3s. 关键程序如下:

void main(void)

{

GPIO_Init(BUZZER_GPIO_PORT,BUZZER_GPIO_PINS,GPIO_Mode_Out_PP_Low_Slow);//PB2 TIM2_CH2

CLK_PeripheralClockConfig (CLK_Peripheral_TIM2,ENABLE); //使能外设时钟,STM8L外设时钟默认关闭,使用前需使能
TIM2_DeInit();
//TIM2_TimeBaseInit(TIM2_Prescaler_128, 0xff);//16M/8/128=15.625K,0xff=255,255*(1/15.625)=0.01632S,大约61次中断是1S
TIM2_TimeBaseInit(TIM2_Prescaler_1,TIM2_CounterMode_Up,999);//16M/8/1=2M,0xff=255,255*(1/15.625)=0.01632S,大约61次中断是1S 2KHz
TIM2_OC2Init(TIM2_OCMode_PWM1,
TIM2_OutputState_Enable,
500,
TIM2_OCPolarity_High,
TIM2_OCIdleState_Set);
TIM2_OC2PreloadConfig(ENABLE);

}

void music (void)
{
TIM2_CtrlPWMOutputs(ENABLE);
Delayms(100);
TIM2_CtrlPWMOutputs(DISABLE);
Delayms(100);
TIM2_CtrlPWMOutputs(ENABLE);
Delayms(100);
TIM2_CtrlPWMOutputs(DISABLE);
DelayS(3);
}

//延时微妙
void Delayus(void)
{
asm("nop");
// asm("nop");
// asm("nop");
// asm("nop");
}
//延时毫秒
void Delayms(unsigned int time)
{
unsigned int i;
while(time--){
// for(i=900;i>0;i--)
for(i=100;i>0;i--)
{
Delayus();

}
}
}
//秒延时
void DelayS(unsigned int time)
{
while(time--)
{
Delayms(1000);
}
}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
最近文章
签名类型
2024-04-29 16:28:59
cat 文件名
2024-04-29 15:05:34
推荐文章
最近访客