如何编码STM32 DC-AC电源逆变器代码?

时间:2019-03-07 03:15:28

标签: arduino stm32 nano

我有一台使用带有中央接线片的变压器的交流电源逆变器。这些mosfet由arduino Nano通过在timer0 @ 31khz上的P&F正确模式下使用PWM在arduino Nano上进行控制,因为timer1在做其他事情。

输出信号具有死区时间,以避免两个mosfet同时工作。

我的问题是如何使用maple内核编写相同的代码...特别是HardwareTimer库。

以下是nano的代码功能:

void SetPowerFr(){
TCCR0A = 0;  //reset the register
TCCR0B = 0;  //reset the register

TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM00);//Phase-correct
TCCR0B = (TCCR0B & 0b11111000) | 0x01;//Prescaler
TCCR0A = (TCCR0A & 0x0F) | 0xB0 ; // invert Pin B

OCR0B = 255; //it is inverted!!!

CiclosReloj = round(Crystal*1000000.0/(2.0*maxPowerFr));
currPowerFr = Crystal*1000000.0/(2.0*CiclosReloj);
}

void SetPowerDC() {//duty control set
//Positive duration (Duty cycle)
CiclosPos = round(CiclosReloj * (currPowerDC/(200.0+PowerSafe)));
}

void PowerOn(){
//ICR1 = CiclosReloj; //if timer1 is used
OCR0A = CiclosPos;  //Positive duration (Duty cycle)
OCR0B = CiclosReloj-CiclosPos; //Note: IRC1=OCR1A+OCR1B.
}

void PowerOff(){
//ICR1 = 0;//if timer1 is used
OCR0A = 0;
OCR0B = 255;//it is inverted!!!
}

这是信号的视频: VIdeo Inverter

0 个答案:

没有答案