用DSP2812写了个用EVA产生PWM的程序,怎么改能让其在某时刻停止产生PWM

用DSP2812写了个用EVA产生PWM的程序,怎么改能让其在某时刻停止产生PWM,第1张

1将产生spwm的定时器停止

EvaRegsT1CONbitTENABLE = 0;

EvaRegsT2CONbitTENABLE = 0;

2将spwm管脚置为高阻态

EvaResGPTCONAall &= ~(0x0060); //第5、6位置0

3一般外部驱动的IGBT都需要控制信号,这时为了保险起见。需要通过特定的IO口给出控制信

号,使IGBT输出全部都禁止。如我这里外部控制信号通过FPGA连在A口。需要下面指令:

GpioDataRegsGPADATall |= 0x0007; //我这里有三路信号需要控制。

STM32F405死区时间指的是在一次硬件复位后,系统从复位状态到正常运行状态的时间。STM32F405死区时间由多个因素决定,包括复位电路、复位信号类型、复位信号持续时间、复位信号滞后时间、复位信号抖动、复位信号传播时间、复位信号稳定时间等。STM32F405死区时间一般为30ns,但也可能会因复位电路的不同而有所变化。此外,复位信号的持续时间也会影响STM32F405死区时间,一般为至少2μs。此外,复位信号的滞后时间也会影响STM32F405死区时间,一般为至少2μs。此外,复位信号的抖动也会影响STM32F405死区时间,一般为至少2μs。此外,复位信号的传播时间也会影响STM32F405死区时间,一般为至少2μs。最后,复位信号的稳定时间也会影响STM32F405死区时间,一般为至少2μs。综上所述,STM32F405死区时间一般为30ns,但也可能会因复位电路的不同而有所变化,最长可达到2μs。

随便说说,实际比这要复杂,大概5000分会有人给详细的实现吧。

就是用两个IO,假设分别叫做A,B吧,来做输出信号,反复控制一个时序:

1 A有效,B无效;

2 A无效,B无效;

3 A无效,B有效;

4 A无效,B无效;

调节1, 3之间的比例,就是PWM调节,

其中2,4是死区,就是避免上下管同时打开,它们占整个过程比例较小。

然后循环即可

其中1~4加起来的总时间是周期,1/周期是PWM的频率

1的时长 / 周期是 duty cycle

不是可以直接调用库文件吗?

TIM1_DeInit();

//设置死区时间10/16=06us

TIM1_BDTRConfig(TIM1_OSSISTATE_ENABLE,TIM1_LOCKLEVEL_OFF,10,TIM1_BREAK_DISABLE,

TIM1_BREAKPOLARITY_LOW,TIM1_AUTOMATICOUTPUT_DISABLE);

//设置PWM频率10K

TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 10016, 0); //100us 10K

//PWM极性设置相同,则输出为互补,否则为同步信号。

TIM1_OC1Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_DISABLE, TIM1_OUTPUTNSTATE_DISABLE,

PulseWidth, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH,

TIM1_OCIDLESTATE_RESET, TIM1_OCNIDLESTATE_RESET);

TIM1_OC2Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_DISABLE, TIM1_OUTPUTNSTATE_DISABLE,

PulseWidth, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH,

TIM1_OCIDLESTATE_RESET, TIM1_OCNIDLESTATE_RESET);

TIM1_OC3Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_DISABLE, TIM1_OUTPUTNSTATE_DISABLE,

PulseWidth, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH,

TIM1_OCIDLESTATE_RESET, TIM1_OCNIDLESTATE_RESET);

TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);

TIM1_ARRPreloadConfig(ENABLE);

TIM1_Cmd(ENABLE);

TIM1_CtrlPWMOutputs(ENABLE);

以上就是关于用DSP2812写了个用EVA产生PWM的程序,怎么改能让其在某时刻停止产生PWM全部的内容,包括:用DSP2812写了个用EVA产生PWM的程序,怎么改能让其在某时刻停止产生PWM、stm32f405死区时间、单片机IO口如何输出带死区的PWM(不带PWM模块,用软件写的方式实现)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10124336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存