main.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /**
  2. @copyright None
  3. @file main.c
  4. @author Comment Vivre
  5. @date 2025-10-31
  6. @brief 主函数 初始化 主循环
  7. */
  8. #include <Myproject.h>
  9. bool data IsTick = false;
  10. bool data isCtrlPowOn = false;
  11. Curr_Offset_t xdata currOffset;
  12. Motor_Control_t xdata motorControl;
  13. Motor_Fault_t xdata motorFault;
  14. CurrentVarible xdata mcCurVarible;
  15. FOCCTRL xdata mcFocCtrl;
  16. /**
  17. @function HardwareInit
  18. @brief 硬件初始化
  19. @date 2025-11-11
  20. */
  21. void HardwareInit(void)
  22. {
  23. // 上电等待
  24. uint16 PowerUpCnt = 0;
  25. while (PowerUpCnt++ < 10000);
  26. // 参考电压初始化
  27. VREF_Config_Init();
  28. // 外部中断初始化 预驱故障中断保护
  29. PreDriver_Falut_Init();
  30. // IO初始化
  31. GPIO_Init();
  32. // ADC端口初始化
  33. ADC_Init();
  34. // AMP初始化
  35. AMP_Init();
  36. // 驱动初始化
  37. Driver_Init();
  38. // 串口初始化
  39. UART1_Init();
  40. Set_IRQ_DMA(DMA_IRQ_L1);
  41. // 系统定时器初始化
  42. Sys_Tick();
  43. _nop_(); _nop_();
  44. EA = 1;
  45. }
  46. /**
  47. @function SoftwareInit
  48. @brief 软件初始化
  49. @date 2025-11-11
  50. */
  51. void SoftwareInit(void)
  52. {
  53. // FaultVarible变量清零
  54. memset(&mcFaultDect, 0, sizeof(FaultVarible));
  55. // ProtectVarible保护次数清零
  56. memset(&mcProtectTime, 0, sizeof(ProtectVarible));
  57. // 电流保护的变量清零
  58. memset(&mcCurVarible, 0, sizeof(CurrentVarible));
  59. mcState = mcReady;
  60. mcFaultSource = 0;
  61. }
  62. /**
  63. @function main
  64. @brief 主函数 电机驱动主循环 任务循环
  65. @date 2025-10-31
  66. */
  67. void main(void)
  68. {
  69. HardwareInit();
  70. SoftwareInit();
  71. _nop_(); _nop_(); _nop_();
  72. WatchDogConfig(600, 1);
  73. while (1)
  74. {
  75. if (IsTick)
  76. {
  77. Get_ADC_Value();
  78. // 目标转速设置
  79. Get_Target_Ref();
  80. // 环路响应
  81. Loop_Control();
  82. // 上电控制
  83. Power_In_Control();
  84. // LED灯故障显示
  85. LED_State_Display(mcFaultSource);
  86. // 故障保护函数功能
  87. Fault_Detection();
  88. Tick_Task();
  89. // 调试信息上载
  90. Dabug_Data_Update();
  91. // 喂狗
  92. SetBit(WDT_CR, WDTRF);
  93. IsTick = false;
  94. }
  95. Motor_Control_State();
  96. }
  97. }