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