【STM32F0开发日志/评测/笔记】+互补PWM波的产生
由于需要驱动H桥,产生一个伪直流,拿到板子之后一直在捣鼓PWM波,产生了占空比50%,有死去时间的0.125Hz互补的方波,主要操作如下,会有一些误差:TimerPeriod = (SystemCoreClock / 1000) - 1;
Channel1Pulse = (uint16_t) (((uint32_t) 5 * (TimerPeriod - 1)) / 10);//占空比调节
TIM_TimeBaseStructure.TIM_Prescaler = 8000;//调整频率
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = TimerPeriod;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStructure.TIM_Pulse = Channel1Pulse;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1;
TIM_BDTRInitStructure.TIM_DeadTime = 48;//死区时间
TIM_BDTRInitStructure.TIM_Break = TIM_Break_Enable;
TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;
TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
TIM_Cmd(TIM1, ENABLE);
TIM_CtrlPWMOutputs(TIM1, ENABLE);
0.5Hz的互补方波:
0.125Hz互补方波:
死区时间1us:
RE:【STM32F0开发日志/评测/笔记】+互补PWM波的产生
很好很好,死区也用软件产生,我以前用IR2130驱动,驱动芯片带保护,死区就不用考虑了。;P;P;P
RE:【STM32F0开发日志/评测/笔记】+互补PWM波的产生
:lol多谢!期待后续已添加到社区网友原创汇总:
STM32F030探索套件开发日志,中文教程,使用问答70篇 的顶顶顶顶顶顶顶顶顶顶 frank897668558 发表于 2013-12-23 16:33
很好很好,死区也用软件产生,我以前用IR2130驱动,驱动芯片带保护,死区就不用考虑了。
...
就是代码编写的多了很多吧 谢谢lz的资料分享
页:
[1]