Declaration.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. /**
  2. * @copyright None
  3. * @file Declaration.h
  4. * @author Comment Vivre
  5. * @date 2024-08-26
  6. * @brief None
  7. */
  8. #ifndef __DECLARATION_H_
  9. #define __DECLARATION_H_
  10. #include <VaribleDef.h>
  11. // 运行
  12. /**
  13. @brief 状态处理函数
  14. */
  15. void MC_Control(void);
  16. uint8 Drv_SectionCheak(void);
  17. void VariablesPreInit(void);
  18. void GetCurrentOffset(void);
  19. void Motor_Ready (void);
  20. void Motor_Init (void);
  21. void FOC_Init(void);
  22. void Motor_Charge(void);
  23. void MC_Stop(void);
  24. void MC_Break(void);
  25. void Motor_Static_Open(void);
  26. void Motor_FocTailWind_Open(void);
  27. void Motor_Align(void);
  28. void MotorcontrolInit(void);
  29. void Motor_TailWind(void);
  30. void MotorcontrolInit(void);
  31. void McTailWindDealwith(void);
  32. void TailWindDealwith(void);
  33. void TargetRef_Process(void);
  34. void Speed_response(void);
  35. int16 Motor_Ramp(int16 ref);
  36. void VSPSample(void);
  37. void ONOFF_Starttest(void);
  38. void ATORamp(void);
  39. void TickCycle_1ms(void);
  40. void PWMInputCapture(void);
  41. void FGOutput(void);
  42. void Fault_GetCurrentOffset(void);
  43. uint32 Abs_F32(int32 value);
  44. void SinCal(int16 Ref, int16 Theta, int16 * Sin, int16 * Cos);
  45. uint16 SqrtUDQ(int16 sqrtUd, int16 sqrtUq);
  46. void LedDisplay(uint8 uLedMask);
  47. void zeroLoss(void);
  48. // 保护相关
  49. void Fault_Detection(void);
  50. void Fault_OverCurrent(void);
  51. void Fault_Temperature(void);
  52. void Fault_Voltage(void);
  53. void Fault_Stall(void);
  54. void Fault_PhaseLoss(void);
  55. void UnderProcess(void);
  56. void Fault_Power(void);
  57. // 硬件初始化声明
  58. void AMP_Init(void);
  59. void ADC_Init(void);
  60. void CMP0_Init(void);
  61. void CMP3_Init(void);
  62. void CMP3_Interrupt_Init(void);
  63. unsigned short CRC_Check(unsigned char start_sector , unsigned char offset_sector);
  64. void Driver_Init(void);
  65. void GPIO_Init(void);
  66. void GPIO_Default_Init(void);
  67. void SPI_Init(void);
  68. void TSD_Init(void);
  69. void TEMP_Check(void);
  70. void PI_Init(void);
  71. void PI2_Init(void);
  72. void PI3_Init(void);
  73. void UART1_Init(void);
  74. void UART2_Init(void);
  75. void put_char(unsigned char c);
  76. void put_string(unsigned char *str);
  77. // DMA相关
  78. typedef enum
  79. {
  80. UART_DRAM = 0,
  81. DRAM_UART = DMACFG0,
  82. I2C_DRAM = DMACFG1,
  83. DRAM_I2C = DMACFG1 | DMACFG0,
  84. SPI_DRAM = DMACFG2,
  85. DRAM_SPI = DMACFG2 | DMACFG0,
  86. UART2_DRAM = DMACFG2 | DMACFG1,
  87. DRAM_UART2 = DMACFG2 | DMACFG1 | DMACFG0
  88. }eType_DMA_PIPE;
  89. typedef enum
  90. {
  91. DMA_IRQ_L1 = 0,
  92. DMA_IRQ_L2 = 0x40,
  93. DMA_IRQ_L3 = 0x80,
  94. DMA_IRQ_L4 = 0xc0
  95. }eType_DMA_IRQ;
  96. typedef enum
  97. {
  98. BIG_ENDIAN = 0,
  99. LITTLE_ENDIAN = ENDIAN
  100. }eType_DMA_Endian;
  101. typedef enum
  102. {
  103. DMA_BSY = DMABSY,
  104. DMA_IRQ = DMAIF
  105. }eType_DMA_Statu;
  106. /******************************************************************************///Function Subject
  107. extern void SetPipe_DMA0(eType_DMA_PIPE ePipe);
  108. extern void SetPipe_DMA1(eType_DMA_PIPE ePipe);
  109. extern void SetDataPackage_DMA0(unsigned short ulAddr, char cLen);
  110. extern void SetDataPackage_DMA1(unsigned short ulAddr, char cLen);
  111. extern void EnableRun_DMA0(void);
  112. extern void EnableRun_DMA1(void);
  113. extern bool GetStatus_DMA0(eType_DMA_Statu eStatu);
  114. extern bool GetStatus_DMA1(eType_DMA_Statu eStatu);
  115. extern void SetEndian_DMA(eType_DMA_Endian eEndian);
  116. extern void SetIRQ_DMA(ebool eIRQ, eType_DMA_IRQ eIP);
  117. extern void SetDbgMod_DMA(void);
  118. extern void SetDbgData_DMA(unsigned short ulAddr);
  119. extern void Set_DBG_DMA(uint16 DMAAddr);
  120. void ZeroCrossing_Init(void);
  121. #define TIM3_Fre (750000.0) // TIM0计数频率750KHz
  122. #define TIM4_Fre (6000.0) // TIM0计数频率6KHz
  123. void Timer1_Init(void);
  124. void Timer2_Init(void);
  125. void Timer3_Init(void);
  126. void Timer4_Init(void);
  127. void TIM4_Init_RF(void);
  128. /* ------------------------------------------- 功能 ------------------------------------------------------------- */
  129. /**
  130. @brief RSD顺逆风
  131. */
  132. void RsdProcess(void);
  133. void RSDTailWindStart(void);
  134. void RSDDetectInit(void);
  135. MotStateType RSDStartProcess(void);
  136. /**
  137. @brief FOC顺逆风
  138. */
  139. void FocDetectInit(void);
  140. void FOCCloseLoopStart(void);
  141. void FOC_TailWindDealwith(void);
  142. /**
  143. @brief 弱磁
  144. */
  145. void FiledWeakenInit(void);
  146. void FileWeakenControl(void);
  147. /**
  148. @brief BMEF顺逆风
  149. */
  150. void BEMFDetectInit(void);
  151. void BemfProcess(void);
  152. void BEMFFOCCloseLoopStart(void);
  153. MotStateType Bemf_Start_Process(void);
  154. /**
  155. @brief 电压补偿
  156. */
  157. void VoltageCompensation(uint8 VCCtrlMode, uint16 VCmcDcbusFlt);
  158. void BusAverageVoltage(void);
  159. typedef struct
  160. {
  161. uint8 CheckCount; //
  162. uint8 TSD_Enable_Flag; // 温度检测使能标志位
  163. uint8 TSD_Trigger_Flag; // 温度检测触发标志位
  164. uint8 ActualTemper; //
  165. uint16 Trigger_Value; //
  166. uint16 TSD_Dec_Time; // 温度检测时间计数
  167. }MCUTemperature;
  168. extern MCUTemperature xdata TSDTemperature;
  169. typedef struct
  170. {
  171. uint8 ScrOnAngleTimeDatum; //期望给定 导通延迟时间 单位为 1/载波频率
  172. uint8 ScrOnAngleTime; //实际给定 导通延迟时间 单位为 1/载波频率
  173. uint8 ScrOnPeriod; //控制周期
  174. uint16 Temperature; //温度值
  175. uint16 TemperatureDatum[3]; //温度期望值
  176. uint16 TPCtrlDealy; // 发热丝导通延时计数
  177. uint8 ScrOnZeroFlag; //控制周期
  178. uint16 ScrOnZeroCnt;
  179. } USER_TYPEDEF;
  180. extern USER_TYPEDEF User;
  181. typedef struct
  182. {
  183. uint16 LEDCnt;
  184. uint8 FlagLED;
  185. // uint8 FlagStepTime;
  186. // uint16 LEDTimeCnt;
  187. } LEDCtl_TypeDef;
  188. extern LEDCtl_TypeDef LEDCtl;
  189. #define LED1_MASK ((uint8)(1 << 0))
  190. #define LED2_MASK ((uint8)(1 << 1))
  191. #define LED3_MASK ((uint8)(1 << 2))
  192. #define LED4_MASK ((uint8)(1 << 3))
  193. #define LED5_MASK ((uint8)(1 << 4))
  194. #define LED6_MASK ((uint8)(1 << 5))
  195. void LEDControl(void);
  196. void Temperature_Control(void);
  197. void LedDisplay(uint8 uLedMask);
  198. /**
  199. @brief 按键函数声明
  200. */
  201. #define SW3 GP33
  202. #define SW1 GP33
  203. #define SW2 GP26
  204. void KeyInit(void);
  205. int KeyValue(void);
  206. int KeyValue1(void);
  207. void KeyScan(void);
  208. #endif