BoooomFOC_STSPIN32G4_EVB/APP/APP_Task.c

75 lines
1.9 KiB
C
Raw Normal View History

2024-05-10 02:39:53 +08:00
//
// Created by ZK on 24-5-10.
//
#include "APP_Task.h"
#include "APP_Main.h"
#include "Angle.h"
#include "InteriorADC.h"
#include "Controller/Controller.h"
2024-05-17 00:43:58 +08:00
#include "Controller/SVPWM/SVPWM.h"
2024-05-10 02:39:53 +08:00
2024-05-17 00:43:58 +08:00
#define UTILS_LP_FAST(value, sample, filter_constant) (value -= (filter_constant) * ((value) - (sample)))
2024-05-10 02:39:53 +08:00
float CurrA, CurrB, CurrC;
float Current_Temp, V_Temp;
//float32_t NowAngle;
2024-05-17 00:43:58 +08:00
float Current_Temp1, ii = 0.0f, Test_Angle = 0.0f;
2024-05-10 02:39:53 +08:00
#define PWM_FREQUENCY 24000
#define CURRENT_MEASURE_HZ PWM_FREQUENCY
#define CURRENT_MEASURE_PERIOD (float) (1.0f / (float) CURRENT_MEASURE_HZ)
#define TIMER0_CLK_MHz 168
#define PWM_PERIOD_CYCLES (uint16_t)((TIMER0_CLK_MHz * (uint32_t) 1000000u / ((uint32_t) (PWM_FREQUENCY))) & 0xFFFE)
#define HALF_PWM_PERIOD_CYCLES (uint16_t)(PWM_PERIOD_CYCLES / 2U)
2024-05-17 00:43:58 +08:00
int up = 1;
float32_t A, Speedtarget;
int32_t number;
int32_t mode = 0;
2024-05-10 02:39:53 +08:00
void High_Frequency_Task() {
2024-05-17 00:43:58 +08:00
if (mode < 10000) {
// HAL_Delay(1000);
mode++;
}
if (mode >= 10000) {
number++;
if (number >= 1 && number <= 50000) {
Speedtarget = 0.1;
} else if (number >= 50000 && number <= 100000) {
Speedtarget = -1.0;
} else if (number >= 100001) {
number = 0;
}
// Test_Angle += 0.01f;
// if (Test_Angle > 360.0f) {
// Test_Angle = 0.0f;
// }
//Data.Angle.getAngle()
// SendCurrent_Vofa(ADC1->JDR1, ADC2->JDR1, ADC1->JDR2);
// float test = 0;
// UTILS_LP_FAST(test, 12, 0.05f);
// usb_printf("%f\r\n", test);
// Generate_SVM(0.0f, 0.05f, Data.Angle.getAngle());
// float32_t Eangle = Data.Angle.getAngle();
SpeedControl(Speedtarget, MT_ReadAngle());
FOC_current(0, 5.0f, Data.Angle.getAngle(), 5000);
// SendCurrent_Vofa(Test_Angle,A, (FOC.dtc_a * (float) HALF_PWM_PERIOD_CYCLES));
2024-05-10 02:39:53 +08:00
// SendCurrent_Vofa((ADC1->JDR1)/4096.0f*3.3f/0.005f/7.33333f, 0, 0);
2024-05-17 00:43:58 +08:00
}
2024-05-10 02:39:53 +08:00
}