STM8 开发故事--之蜂鸣器 BEEP设计更好的解决方案(二)。
上一节,讲到stm8l152的beep引脚因为与swim共享,造成开发和生产都不方便。有没有其他解决方案那,肯定有。
1.换mcu。
2.换另一个引脚。用有源蜂鸣器。这设计软件简单,但是电路复杂。
3.换另一个引脚,用pwm驱动。可以直接驱动无缘蜂鸣器。
我当然选择第3个方案。用stm8的定时器1 timer1做信号源。代码如下。
这段程序是用IAR库编写的
void Time1_Init(void)//输出PD5 timer1初始化的库函数模式
{
// PD_DDR_DDR5 =0;// 设置为输出 GPIO设置有人说必须要我没用也行
// PD_CR1_C15 =1;//推挽输出
CLK_PeripheralClockConfig(CLK_Peripheral_TIM1,ENABLE);//开启TIM1时钟
TIM1_DeInit();
TIM1_TimeBaseInit(2,TIM1_CounterMode_Up,240,0); //分频1600,向上计数,频率240,重复计数器为0
TIM1_OC3Init(TIM1_OCMode_PWM2,//PWM1模式2
TIM1_OutputState_Enable,//启用互补输出比较
TIM1_OutputNState_Disable,
50,//脉冲宽度初值是1000
TIM1_OCPolarity_Low,
TIM1_OCNPolarity_Low,
TIM1_OCIdleState_Set,