/** @copyright None @file main.c @author Comment Vivre @date 2025-10-31 @brief 主函数 初始化 主循环 */ #include bool data IsTick = false; bool data isCtrlPowOn = false; Curr_Offset_t xdata currOffset; Motor_Control_t xdata motorControl; Motor_Fault_t xdata motorFault; CurrentVarible xdata mcCurVarible; FOCCTRL xdata mcFocCtrl; /** @function HardwareInit @brief 硬件初始化 @date 2025-11-11 */ void HardwareInit(void) { // 上电等待 uint16 PowerUpCnt = 0; while (PowerUpCnt++ < 10000); // 参考电压初始化 VREF_Config_Init(); // 外部中断初始化 预驱故障中断保护 PreDriver_Falut_Init(); // IO初始化 GPIO_Init(); // ADC端口初始化 ADC_Init(); // AMP初始化 AMP_Init(); // 驱动初始化 Driver_Init(); // 串口初始化 UART1_Init(); Set_IRQ_DMA(DMA_IRQ_L1); // 系统定时器初始化 Sys_Tick(); _nop_(); _nop_(); EA = 1; } /** @function SoftwareInit @brief 软件初始化 @date 2025-11-11 */ void SoftwareInit(void) { // FaultVarible变量清零 memset(&mcFaultDect, 0, sizeof(FaultVarible)); // ProtectVarible保护次数清零 memset(&mcProtectTime, 0, sizeof(ProtectVarible)); // 电流保护的变量清零 memset(&mcCurVarible, 0, sizeof(CurrentVarible)); mcState = mcReady; mcFaultSource = 0; } /** @function main @brief 主函数 电机驱动主循环 任务循环 @date 2025-10-31 */ void main(void) { HardwareInit(); SoftwareInit(); _nop_(); _nop_(); _nop_(); WatchDogConfig(600, 1); while (1) { if (IsTick) { Get_ADC_Value(); // 目标转速设置 Get_Target_Ref(); // 环路响应 Loop_Control(); // 上电控制 Power_In_Control(); // LED灯故障显示 LED_State_Display(mcFaultSource); // 故障保护函数功能 Fault_Detection(); Tick_Task(); // 调试信息上载 Dabug_Data_Update(); // 喂狗 SetBit(WDT_CR, WDTRF); IsTick = false; } Motor_Control_State(); } }