×
嵌入式 > 技术百科 > 详情

stm8 pwm停止时电平的设定

发布时间:2020-12-22 发布时间:
|

在用pwm驱动蜂鸣器的开发中,pwm停止输出后一直处于低电位,这样蜂鸣器虽然不工作却仍然消耗70mah的电流。所以设置pwm结束后电平非常重要。我采用的办法和网上其它方法有所不同:


1.在pwm初始化时一定要设置gpio的状态。你设置的初始状态将决定pwm结束的状态。


  GPIO_Init(GPIOD,  GPIO_Pin_5 , GPIO_Mode_Out_OD_HiZ_Slow);//初始化 漏极开路,高阻抗电平,2兆赫  

  GPIO_WriteBit(GPIOD,GPIO_Pin_5,SET);// 


gpio设定成开漏和推挽对电流影响不大


2.用   TIM1_CtrlPWMOutputs(DISABLE);  这个指令在其它控制PWM关断。


上源码:


void Time1_Init(void)//输出PD5   timer1初始化的库函数模式

//  PD_DDR_DDR5 =0;//设置为输出

//    PD_CR1_C15 =0;//推挽输出

  GPIO_Init(GPIOD,  GPIO_Pin_5 , GPIO_Mode_Out_OD_HiZ_Slow);//初始化 漏极开路,高阻抗电平,2兆赫  

  GPIO_WriteBit(GPIOD,GPIO_Pin_5,SET);// 

    

  CLK_PeripheralClockConfig(CLK_Peripheral_TIM1,ENABLE);//开启TIM1时钟

  TIM1_DeInit();

  TIM1_TimeBaseInit(2,TIM1_CounterMode_Up,240,0); //分频1600,向上计数,TIM1_ARR=200,重复计数器为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,

               TIM1_OCNIdleState_Set);

  TIM1_OC3PreloadConfig(ENABLE);

  

  TIM1_Cmd(ENABLE); //定时器开始

  TIM1_CtrlPWMOutputs(DISABLE); //用这个指令控制PWM关断

  

}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ZigBee技术语音图像无线监控系统的设计与实现