| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #include <MyProject.h>
- bool data isCtrlPowOn = false;
- bool data TickFlag = false;
- Loop_Control_t xdata loopCtrl; // 环路控制
- Estimated_Data_t xdata estData; // 数据采集
- Fault_Check_t xdata faultCheck;
- Fault_Type_e xdata FaultSource;
- Sys_State_e xdata sysState;
- /**
- @brief 硬件初始化,初始化需要使用的硬件设备配置,FOC必须配置的是运放电压、运放初始化、ADC初始化、Driver初始化
- 其他的可根据实际需求加。
- @date 2022-07-14
- */
- void HardwareInit(void)
- {
- CMP3_Init();
- GPIO_Init();
- ADC_Init();
- AMP_Init();
- // 附加配置 处理程序丢失问题 !>待验证
- Config_Init();
- Driver_Init();
- PWM_Timer_Init();
- // 硬件过流中断初始化
- CMP3_Interrupt_Init();
- // 调试串口初始化
- UART1_Init();
- // Systick定时器 使能与中断优先级配置
- ClrBit(IP2, PSYSTICK1 | PSYSTICK0);
- SetBit(DRV_SR, SYSTIE);
- EA = 1;
- }
- /**
- @brief 部分变量初始化,上电运行一次
- @date 2022-07-14
- */
- void SoftwareInit(void)
- {
- memset(&mcFocCtrl, 0, sizeof(FOCCTRL));
- McStaSet.SetMode = 0;
- mcCurOffset.IuOffsetSum = 16383;
- mcCurOffset.IvOffsetSum = 16383;
- mcCurOffset.Iw_busOffsetSum = 16383;
- }
- /**
- @function main
- @brief 主函数
- @date 2025-04-17
- */
- void main(void)
- {
- uint16_t PowerUpCnt = 0;
-
- for (PowerUpCnt = 0; PowerUpCnt < 55000; PowerUpCnt++);
-
- SoftwareInit();
- HardwareInit();
-
- while (1)
- {
- if (!mcCurOffset.OffsetFlag)
- {
- GetCurrentOffset();
- }
- else
- {
- Motor_Control_State();
-
- if (TickFlag)
- {
- // 喂狗
- SetBit(WDT_CR, WDTRF);
- // 获取滤波数据
- Get_LPF_Value();
- // 输入命令处理
- Get_Target_Ref();
- // 故障处理与故障恢复
- Motor_Fault_Handle();
-
- // 环路响应
- if ((sysState == MOTOR_RUN) || (sysState == MOTOR_STOP))
- { Loop_Control(); }
-
- // 故障指示
- LED_State_Display(FaultSource);
-
- // 滤波器带宽动态调整
- if (sysState == MOTOR_RUN)
- { ATORamp(); }
-
- TickFlag = false;
- }
- }
- }
- }
|