// // Created by ZK on 2023/3/14. // //#include "main.h" #include #include "Controller.h" #include "SVPWM/SVPWM.h" tFOC FOC; float uAlpha1; float uBeta1; bool Generate(float ud, float uq, float Theta) { inversePark(ud, uq, Theta, &uAlpha1, &uBeta1); if (0 == SVPWM(uAlpha1, uBeta1, &FOC.dtc_a, &FOC.dtc_b, &FOC.dtc_c)) { // set_a_duty((uint16_t)(Foc.dtc_a * (float) HALF_PWM_PERIOD_CYCLES)); // set_b_duty((uint16_t)(Foc.dtc_b * (float) HALF_PWM_PERIOD_CYCLES)); // set_c_duty((uint16_t)(Foc.dtc_c * (float) HALF_PWM_PERIOD_CYCLES)); // TIM1->CCR1 = (uint16_t) FOC.dtc_a; // TIM1->CCR2 = (uint16_t) FOC.dtc_b; // TIM1->CCR3 = (uint16_t) FOC.dtc_c; } return FOC.dtc_a; }