m0g3507_int.c 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482
  1. /* add user code begin Header */
  2. /**
  3. **************************************************************************
  4. * @file .c
  5. * @brief main interrupt service routines.
  6. **************************************************************************
  7. * Copyright notice & Disclaimer
  8. *
  9. * The software Board Support Package (BSP) that is made available to
  10. * download from Artery official website is the copyrighted work of Artery.
  11. * Artery authorizes customers to use, copy, and distribute the BSP
  12. * software and its related documentation for the purpose of design and
  13. * development in conjunction with Artery microcontrollers. Use of the
  14. * software is governed by this copyright notice and the following disclaimer.
  15. *
  16. * THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES,
  17. * GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS,
  18. * TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR
  19. * STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS,
  20. * INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
  21. * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
  22. *
  23. **************************************************************************
  24. */
  25. /* add user code end Header */
  26. /* includes ------------------------------------------------------------------*/
  27. //#include "at32f421_int.h"
  28. /* private includes ----------------------------------------------------------*/
  29. /* add user code begin private includes */
  30. //#include "at32f421_wk_config.h"
  31. #include "TimeTask_Event.h"
  32. #include "syspar.h"
  33. #include "user.h"
  34. //#include "at32f421_adc.h"
  35. //#include "at32f421_tmr.h"
  36. #include "usart.h"
  37. #include "can.h"
  38. //#include "SEGGER_RTT.h"
  39. #include "bikelight.h"
  40. #include "UserGpio_Config.h"
  41. #include "tmag5273.h"
  42. #include "ti_msp_dl_config.h"
  43. /* add user code end private includes */
  44. /* private typedef -----------------------------------------------------------*/
  45. /* add user code begin private typedef */
  46. /* add user code end private typedef */
  47. /* private define ------------------------------------------------------------*/
  48. /* add user code begin private define */
  49. /* add user code end private define */
  50. /* private macro -------------------------------------------------------------*/
  51. /* add user code begin private macro */
  52. /* add user code end private macro */
  53. /* private variables ---------------------------------------------------------*/
  54. /* add user code begin private variables */
  55. /* add user code end private variables */
  56. /* private function prototypes --------------------------------------------*/
  57. /* add user code begin function prototypes */
  58. /* add user code end function prototypes */
  59. /* private user code ---------------------------------------------------------*/
  60. /* add user code begin 0 */
  61. //__IO uint16_t adc1_ordinary_valuetab[5][7] = {0};
  62. __IO uint16_t adc1_preempt_valuetab[5][3] = {0};
  63. __IO uint16_t chanel_trans_complete_flag = 0;
  64. __IO uint16_t adc_trans_complete_flag = 0;
  65. __IO uint16_t preempt_conversion_count = 0;
  66. unsigned int BCnt; // Variable: speed control period tick
  67. unsigned int CCnt;
  68. unsigned int DCnt;
  69. unsigned int ECnt,FCnt,GCnt,CMPF,CLMPF;
  70. unsigned int CHMPF=0;
  71. unsigned int HALLACnt,HALLBCnt,HALLCCnt;
  72. unsigned int DAC_value;
  73. unsigned int SPEED_edgeCapture,TIPIN_edgeCapture;
  74. unsigned int HGcnt;
  75. //#define DAC12_REF_VOLTAGE_mV (3300)
  76. //#define DAC12_OUTPUT_VOLTAGE_mV (1650)
  77. volatile bool gCheckADC;
  78. unsigned int i = 0;
  79. #define RESULT_SIZE (10)
  80. uint16_t gAdcResult0[12]; //OPA0 OUTPUT
  81. //volatile uint16_t gAdcResult1[RESULT_SIZE]; // PA25 pcb temp
  82. //volatile uint16_t gAdcResult2[RESULT_SIZE];// PA24 motor temp
  83. //volatile uint16_t gAdcResult3[RESULT_SIZE]; // PB24 zhuanba
  84. //volatile uint16_t gAdcResult4[RESULT_SIZE];// PB20 bus current
  85. //volatile uint16_t gAdcResult5[RESULT_SIZE]; // PA14 BAT VOLTAGE
  86. //volatile uint16_t gAdcResult6[RESULT_SIZE]; //OPA1 OUTPUT
  87. //volatile uint16_t gAdcResult7[RESULT_SIZE]; //PB19 A1_6 Liju
  88. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
  89. // gAdcResult1[i] =
  90. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1);
  91. // gAdcResult2[i] =
  92. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_2);
  93. // gAdcResult3[i] =
  94. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_3);
  95. //
  96. // gAdcResult4[i] =
  97. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_4);
  98. // gAdcResult5[i] =
  99. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_5);
  100. //
  101. //
  102. // gAdcResult6[i] =
  103. // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_0);
  104. // DL_GPIO_clearPins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN);
  105. // gAdcResult7[i] =
  106. // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_1);
  107. /* add user code end 0 */
  108. /* external variables ---------------------------------------------------------*/
  109. /* add user code begin external variables */
  110. #if 0
  111. if(adc_interrupt_flag_get(ADC1, ADC_PCCE_FLAG) != RESET)
  112. {
  113. adc_flag_clear(ADC1, ADC_PCCE_FLAG);
  114. if(preempt_conversion_count < 5){
  115. adc1_preempt_valuetab[preempt_conversion_count][0] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_1);
  116. adc1_preempt_valuetab[preempt_conversion_count][1] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_2);
  117. adc1_preempt_valuetab[preempt_conversion_count][2] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_3);
  118. preempt_conversion_count++;
  119. }
  120. }
  121. if(adc_interrupt_flag_get(ADC1, ADC_CCE_FLAG) != RESET)
  122. {
  123. adc_flag_clear(ADC1, ADC_CCE_FLAG);
  124. if(chanel_trans_complete_flag < 7){
  125. adc1_ordinary_valuetab[adc_trans_complete_flag][chanel_trans_complete_flag++] = adc_ordinary_conversion_data_get(ADC1);
  126. }
  127. }
  128. #endif
  129. /* add user code end external variables */
  130. ///**
  131. // * @brief this function handles nmi exception.
  132. // * @param none
  133. // * @retval none
  134. // */
  135. //void NMI_Handler(void)
  136. //{
  137. // /* add user code begin NonMaskableInt_IRQ 0 */
  138. //
  139. // /* add user code end NonMaskableInt_IRQ 0 */
  140. //
  141. // /* add user code begin NonMaskableInt_IRQ 1 */
  142. //
  143. // /* add user code end NonMaskableInt_IRQ 1 */
  144. //}
  145. /**
  146. * @brief this function handles hard fault exception.
  147. * @param none
  148. * @retval none
  149. */
  150. void HardFault_Handler(void)
  151. {
  152. /* add user code begin HardFault_IRQ 0 */
  153. hw_voPWMOff();
  154. /* add user code end HardFault_IRQ 0 */
  155. /* go to infinite loop when hard fault exception occurs */
  156. while (1)
  157. {
  158. /* add user code begin W1_HardFault_IRQ 0 */
  159. /* add user code end W1_HardFault_IRQ 0 */
  160. }
  161. }
  162. ///**
  163. // * @brief this function handles memory manage exception.
  164. // * @param none
  165. // * @retval none
  166. // */
  167. //void MemManage_Handler(void)
  168. //{
  169. // /* add user code begin MemoryManagement_IRQ 0 */
  170. //
  171. // /* add user code end MemoryManagement_IRQ 0 */
  172. // /* go to infinite loop when memory manage exception occurs */
  173. // while (1)
  174. // {
  175. // /* add user code begin W1_MemoryManagement_IRQ 0 */
  176. //
  177. // /* add user code end W1_MemoryManagement_IRQ 0 */
  178. // }
  179. //}
  180. //
  181. ///**
  182. // * @brief this function handles bus fault exception.
  183. // * @param none
  184. // * @retval none
  185. // */
  186. //void BusFault_Handler(void)
  187. //{
  188. // /* add user code begin BusFault_IRQ 0 */
  189. //
  190. // /* add user code end BusFault_IRQ 0 */
  191. // /* go to infinite loop when bus fault exception occurs */
  192. // while (1)
  193. // {
  194. // /* add user code begin W1_BusFault_IRQ 0 */
  195. //
  196. // /* add user code end W1_BusFault_IRQ 0 */
  197. // }
  198. //}
  199. //
  200. ///**
  201. // * @brief this function handles usage fault exception.
  202. // * @param none
  203. // * @retval none
  204. // */
  205. //void UsageFault_Handler(void)
  206. //{
  207. // /* add user code begin UsageFault_IRQ 0 */
  208. //
  209. // /* add user code end UsageFault_IRQ 0 */
  210. // /* go to infinite loop when usage fault exception occurs */
  211. // while (1)
  212. // {
  213. // /* add user code begin W1_UsageFault_IRQ 0 */
  214. //
  215. // /* add user code end W1_UsageFault_IRQ 0 */
  216. // }
  217. //}
  218. //
  219. ///**
  220. // * @brief this function handles svcall exception.
  221. // * @param none
  222. // * @retval none
  223. // */
  224. //void SVC_Handler(void)
  225. //{
  226. // /* add user code begin SVCall_IRQ 0 */
  227. //
  228. // /* add user code end SVCall_IRQ 0 */
  229. // /* add user code begin SVCall_IRQ 1 */
  230. //
  231. // /* add user code end SVCall_IRQ 1 */
  232. //}
  233. //
  234. ///**
  235. // * @brief this function handles debug monitor exception.
  236. // * @param none
  237. // * @retval none
  238. // */
  239. //void DebugMon_Handler(void)
  240. //{
  241. // /* add user code begin DebugMonitor_IRQ 0 */
  242. //
  243. // /* add user code end DebugMonitor_IRQ 0 */
  244. // /* add user code begin DebugMonitor_IRQ 1 */
  245. //
  246. // /* add user code end DebugMonitor_IRQ 1 */
  247. //}
  248. //
  249. ///**
  250. // * @brief this function handles pendsv_handler exception.
  251. // * @param none
  252. // * @retval none
  253. // */
  254. //void PendSV_Handler(void)
  255. //{
  256. // /* add user code begin PendSV_IRQ 0 */
  257. //
  258. // /* add user code end PendSV_IRQ 0 */
  259. // /* add user code begin PendSV_IRQ 1 */
  260. //
  261. // /* add user code end PendSV_IRQ 1 */
  262. //}
  263. /**
  264. * @brief this function handles systick handler.
  265. * @param none
  266. * @retval none
  267. */
  268. void SysTick_Handler(void)
  269. {
  270. /* add user code begin SysTick_IRQ 0 */
  271. /* add user code end SysTick_IRQ 0 */
  272. /* add user code begin SysTick_IRQ 1 */
  273. //clas_ubSystickFlg = 1; // for TUV
  274. cp_ulSystickCnt++;
  275. /* Add your code below */
  276. /* 1ms and Timing Event */
  277. TimingTaskTimerServer();
  278. Event_1ms();
  279. /* TBT interrupt */
  280. tbt_voIsr();
  281. /* UART */
  282. // UART_voApplTimer();
  283. /* LED */
  284. // at32_led_toggle();
  285. // GPIOF->odt ^= GPIO_PINS_7;
  286. /* add user code end SysTick_IRQ 1 */
  287. }
  288. ///**
  289. // * @brief this function handles DMA1 Channel 1 handler.
  290. // * @param none
  291. // * @retval none
  292. // */
  293. //void DMA1_Channel1_IRQHandler(void)
  294. //{
  295. // /* add user code begin DMA1_Channel1_IRQ 0 */
  296. // if(dma_interrupt_flag_get(DMA1_FDT1_FLAG) != RESET)
  297. // {
  298. // // adc_enable(ADC1,FALSE);
  299. // dma_flag_clear(DMA1_FDT1_FLAG);
  300. // //dma_trans_complete_flag++;
  301. // }
  302. // /* add user code end DMA1_Channel1_IRQ 0 */
  303. // /* add user code begin DMA1_Channel1_IRQ 1 */
  304. //
  305. // /* add user code end DMA1_Channel1_IRQ 1 */
  306. //}
  307. /**
  308. * @brief this function handles ADC1 & Comparator handler.
  309. * @param none
  310. * @retval none
  311. */
  312. UWORD tmpSCir = 0;
  313. //void ADC12_0_INST_IRQHandler(void)
  314. //{
  315. // switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)) {
  316. // case DL_ADC12_IIDX_MEM5_RESULT_LOADED:
  317. // gCheckADC = true;
  318. // DL_GPIO_setPins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN);
  319. //// DL_GPIO_togglePins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN);
  320. // delay_cycles(1000);
  321. // gAdcResult0[i] =
  322. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
  323. // gAdcResult1[i] =
  324. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1);
  325. // gAdcResult2[i] =
  326. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_2);
  327. // gAdcResult3[i] =
  328. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_3);
  329. //
  330. // gAdcResult4[i] =
  331. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_4);
  332. // gAdcResult5[i] =
  333. // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_5);
  334. //
  335. //
  336. // gAdcResult6[i] =
  337. // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_0);
  338. // DL_GPIO_clearPins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN);
  339. // gAdcResult7[i] =
  340. // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_1);
  341. // DL_GPIO_clearPins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN);
  342. // i++;
  343. // if (i >= RESULT_SIZE) {
  344. // // __BKPT(0);
  345. // i = 0;
  346. // }
  347. // else{
  348. // ;/*No action required*/
  349. // }
  350. // break;
  351. // default:
  352. // break;
  353. // }
  354. //}
  355. void ADC12_0_INST_IRQHandler(void)//void ADC1_CMP_IRQHandler(void)
  356. {
  357. /* add user code begin ADC1_CMP_IRQ 0 */
  358. // if(adc_interrupt_flag_get(ADC1, ADC_CCE_FLAG) != RESET)
  359. // {
  360. // adc_flag_clear(ADC1, ADC_CCE_FLAG);
  361. // }
  362. // if(adc_interrupt_flag_get(ADC1, ADC_PCCE_FLAG) != RESET)
  363. // {
  364. // adc_flag_clear(ADC1, ADC_PCCE_FLAG);
  365. // //if(preempt_conversion_count < 5)
  366. // // {
  367. // adc1_preempt_valuetab[0][0] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_1);
  368. // adc1_preempt_valuetab[0][1] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_2);
  369. // adc1_preempt_valuetab[0][2] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_3);
  370. // // preempt_conversion_count++;
  371. // //}
  372. // }
  373. BCnt++;
  374. // DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN);
  375. // DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN);
  376. #if(SampleModelSelect == DOUBLERESISTANCE)
  377. if (DL_ADC12_getPendingInterrupt(ADC12_0_INST) &DL_ADC12_IIDX_MEM4_RESULT_LOADED)// if (adc_flag_get(ADC1,ADC_PCCE_FLAG)) //ADCx->SR & 0x04 娉ㄥ叆缁勪腑鏂爣蹇�
  378. {
  379. //
  380. gAdcResult0[0] =
  381. DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
  382. gAdcResult0[1] =
  383. DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1);
  384. gAdcResult0[2] =
  385. DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_2);
  386. gAdcResult0[3] =
  387. DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_3);
  388. gAdcResult0[4] =
  389. DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_4);
  390. gAdcResult0[5] =
  391. DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_0);
  392. gAdcResult0[6] =
  393. DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_1);
  394. gAdcResult0[7] =
  395. DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_2);
  396. gAdcResult0[8] =
  397. DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_3);
  398. gAdcResult0[9] =
  399. DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_4);
  400. gAdcResult0[10] =
  401. DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_5);
  402. // GPIOC->odt ^= GPIO_PINS_13;
  403. // GPIOC->odt ^= GPIO_PINS_15;
  404. // IO_PC10_TEST_ENABLE; //PC10鎵撳嵃鎸囩ず
  405. // if( (((uint8_t)DL_Timer_getTimerCount(MOTOR_PWM_INST)) & 0x10) ==0)// if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// //TIME1 鍚戜笂璁℃暟璇诲彇鐩哥數娴丄D鍊�
  406. {
  407. // GPIOC->odt ^= GPIO_PINS_13;
  408. // if(hw_blPWMOnFlg == TRUE)
  409. {
  410. #if((IPM_POWER_SEL == IPM_POWER_250W_6G) ||(IPM_POWER_SEL ==IPM_POWER_350W_6G))
  411. adc_uwRdsonUReg =RDSON_U_REG();// DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);//
  412. adc_uwRdsonVReg =RDSON_V_REG();//
  413. #else
  414. // adc_uwRdsonUReg =RDSON_U_REG();// DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);//
  415. adc_uwRdsonVReg = RDSON_V_REG();//
  416. adc_uwRdsonWReg = RDSON_W_REG();//
  417. #endif
  418. }
  419. // else
  420. // {
  421. // adc_uwRdsonUReg =adc_stCof.uwIaOffset;//
  422. // adc_uwRdsonVReg =adc_stCof.uwIbOffset;//
  423. // adc_uwRdsonWReg = adc_stCof.uwIcOffset;//
  424. // }
  425. }
  426. // adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇�
  427. // IO_PC10_TEST_DISABLE; //PC10鎵撳嵃鎸囩ず
  428. }
  429. #elif(SampleModelSelect == COMBINATION)
  430. if (adc_flag_get(ADC1,ADC_PCCE_FLAG)) //ADCx->SR & 0x04 娉ㄥ叆缁勪腑鏂爣蹇�
  431. {
  432. if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// //TIME1 鍚戜笂璁℃暟璇诲彇鐩哥數娴丄D鍊�
  433. {
  434. // GPIOC->odt ^= GPIO_PINS_13;// gpio_bits_reset(GPIOC,GPIO_PINS_13);
  435. adc_uwRdsonUReg = ADC1->pdt1_bit.pdt1;//
  436. adc_uwRdsonVReg = ADC1->pdt2_bit.pdt2;//
  437. adc_uwRdsonWReg = ADC1->pdt3_bit.pdt3;//
  438. /* CH4 set to "Frozen" */
  439. TMR1->cm2 &= ~0x7000;
  440. /* CH4 set to "PWM mode 1" */
  441. TMR1->cm2 |= 0x6000;
  442. hw_SetRdsonSample(ADC_CHANNEL_6);
  443. }
  444. else
  445. {
  446. // GPIOB->odt ^= GPIO_PINS_11; // gpio_bits_set(GPIOC,GPIO_PINS_13);//
  447. if( (pwm_stGenOut.blSampleCalibFlag == TRUE)&&(TMR1->c4dt!=pwm_stGenCoef.uwHPWMPd))
  448. {
  449. adc_uwADDMAPhase1 = ADC1->pdt1_bit.pdt1;//
  450. if(pwm_stGenOut.uwSingelRSampleArea == SampleA)
  451. {
  452. adc_uwIaReg = ADC1->pdt2_bit.pdt2;////
  453. GPIOC->odt ^= GPIO_PINS_15;
  454. }
  455. if(pwm_stGenOut.uwSingelRSampleArea == SampleB)
  456. {
  457. adc_uwIbReg = ADC1->pdt3_bit.pdt3;//
  458. }
  459. }
  460. // /* CH4 set to "Frozen" */
  461. TMR1->cm2 &= ~0x7000;
  462. // /* CH4 set to "PWM mode 2" */
  463. TMR1->cm2 |= 0x7000;
  464. //
  465. hw_SetIphaseSample();
  466. // adc_enable(ADC1,FALSE);
  467. //
  468. // adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇�
  469. }
  470. adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇�
  471. }
  472. #endif
  473. /* add user code end ADC1_CMP_IRQ 0 */
  474. /* add user code begin ADC1_CMP_IRQ 1 */
  475. /* add user code end ADC1_CMP_IRQ 1 */
  476. }
  477. /**
  478. * @brief this function handles TMR1 brake overflow trigger and hall handler.
  479. * @param none
  480. * @retval none
  481. */
  482. UWORD tmpSigRTrigZ1 = 0;
  483. UWORD SampUpTige = 0;
  484. UWORD SampDowmTige = 0;
  485. UWORD Samp_Step =0;
  486. void MOTOR_PWM_INST_IRQHandler(void) //void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void)
  487. {
  488. // ECnt++;
  489. /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 0 */
  490. //if(0)//if(tmr_flag_get(TMR1,TMR_BRK_FLAG))//if (TIM_GetFlagStatus(TIM1, TIM_FLAG_Break))
  491. // {
  492. //// tmr_flag_clear(TMR1,TMR_BRK_FLAG);//TIM_ClearFlag(TIM1, TIM_FLAG_Break);
  493. //
  494. // }
  495. // IO_CHECKIO_H();
  496. switch (DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST))
  497. {
  498. case DL_TIMER_IIDX_FAULT:
  499. FCnt++;
  500. //DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_31);
  501. DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_0_INDEX);
  502. DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_1_INDEX);
  503. DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_2_INDEX);
  504. hw_voPWMOff();
  505. // IO_FTESTLED_ON(); //
  506. alm_unCode.bit.IPMFlt = TRUE;
  507. break;
  508. case DL_TIMER_IIDX_ZERO:
  509. // ECnt++;
  510. // if(( Samp_Step==0) ||( Samp_Step>=4))
  511. // Samp_Step=1;
  512. // else
  513. // Samp_Step++;
  514. // switch (Samp_Step)
  515. // {
  516. // case 1:
  517. //// adc_enable(ADC1,TRUE);
  518. // // GPIOB->odt ^= GPIO_PINS_11;
  519. // /* Set Rdson sample trigger */
  520. // //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦
  521. // /* ADC1 regular channel trigger */
  522. //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  523. //
  524. // tbc_voUpIsr();
  525. // // DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN);
  526. // break;
  527. // case 3:
  528. // /* ADC Rdson calibration with single resistance*/
  529. // if (TimingDelay != 0)
  530. // {
  531. // TimingDelay--;
  532. // }
  533. // if(bikespeed_stFreGetOut.uwCaputureOverflowCnt<60000)
  534. // bikespeed_stFreGetOut.uwCaputureOverflowCnt++; //
  535. // cadence_stFreGetOut.uwCaputureOverflowCnt++;
  536. // tbs_voIsr();//20241017
  537. //// if(BikeLedGloFun.blBike_ForwardLedSta==TRUE)
  538. //// {
  539. //// BikeLedGloFun.uwBikeLight_L_PWM +=100;
  540. //// if(BikeLedGloFun.uwBikeLight_L_PWM>720)
  541. //// {
  542. //// BikeLedGloFun.uwBikeLight_L_PWM=720;
  543. //// }
  544. ////
  545. //// BikeLedGloFun.uwBikeLight_F_PWM +=100;
  546. //// if(BikeLedGloFun.uwBikeLight_F_PWM>1800)
  547. //// {
  548. //// BikeLedGloFun.uwBikeLight_F_PWM=1800;
  549. //// }
  550. //// DL_TimerG_setCaptureCompareValue(PWM_2_INST, BikeLedGloFun.uwBikeLight_L_PWM, GPIO_PWM_2_C1_IDX);
  551. //// DL_TimerG_setCaptureCompareValue(PWM_3_INST, BikeLedGloFun.uwBikeLight_F_PWM, GPIO_PWM_3_C1_IDX);//max=1800
  552. //// }
  553. // break;
  554. // default:
  555. //
  556. // break;
  557. // }
  558. // gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15;
  559. // /* ADC1 regular channel trigger */
  560. // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  561. // tbc_voUpIsr();
  562. // tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update);
  563. // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE))
  564. // {
  565. // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE)
  566. // {
  567. // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ;
  568. // IO_FORWARDLED_ON(); //寮�鍓嶇伅
  569. // BikeLedGloFun.blBike_ForwardLedSta=TRUE;
  570. // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++;
  571. // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64)
  572. // {
  573. // BikeLedGloFun.blBike_ForwardLedStart=FALSE;
  574. // }
  575. // }
  576. // }
  577. // if(( BikeLedGloFun.blBike_BackLedSta==TRUE) &&(BikeLedGloFun.blBike_BackLedStart==TRUE))
  578. // {
  579. // if( BikeLedGloFun.blBike_BackLedDetErr==TRUE)
  580. //
  581. // {
  582. // BikeLedGloFun.blBike_BackLedDetErr=FALSE;
  583. // IO_BACKLED_ON();
  584. // BikeLedGloFun.uwBike_BackLedDetErrTime++;
  585. // if( BikeLedGloFun.uwBike_BackLedDetErrTime>=64)
  586. // {
  587. // BikeLedGloFun.blBike_BackLedStart=FALSE;
  588. // }
  589. // }
  590. // }
  591. break;
  592. case DL_TIMER_IIDX_LOAD:
  593. // GCnt++;
  594. // DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN);
  595. // Samp_Step++;
  596. //// DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);//
  597. // switch (Samp_Step)
  598. // {
  599. // case 2:
  600. // // gpio_bits_set(GPIOB,GPIO_PINS_11);
  601. // // adc_enable(ADC1,FALSE);//
  602. // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1;
  603. // // gpio_bits_reset(GPIOB,GPIO_PINS_11);
  604. // #if(JSCOPE_EN!=0)
  605. // Jscope_WtiteData();
  606. // #endif
  607. // break;
  608. // case 4:
  609. // // GPIOC->odt ^= GPIO_PINS_13;
  610. //
  611. // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  612. // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  613. // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  614. // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  615. // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  616. // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  617. // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  618. // // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  619. // // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  620. //
  621. //// pwm_stGenOut.uwNewTIM1COMPR[0]=900 ;
  622. //// pwm_stGenOut.uwNewTIM1COMPR[1]=1250;
  623. //// pwm_stGenOut.uwNewTIM1COMPR[2]=450 ;
  624. //
  625. //
  626. // TIMER_CC_A_INDEX(pwm_stGenOut.uwNewTIM1COMPR[0]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_0_INDEX);//A
  627. // TIMER_CC_B_INDEX(pwm_stGenOut.uwNewTIM1COMPR[1]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_2_INDEX); //B
  628. // TIMER_CC_C_INDEX(pwm_stGenOut.uwNewTIM1COMPR[2]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_1_INDEX);//C
  629. //
  630. // // adc_enable(ADC1,TRUE);//
  631. // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST,2, DL_TIMER_CC_4_INDEX); //采样点设置
  632. // break;
  633. // default:
  634. //
  635. // break;
  636. // }
  637. break;
  638. default:
  639. break;
  640. }
  641. // IO_CHECKIO_L();
  642. // IO_CHECKIO_L();
  643. ////if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_ZERO )
  644. // {
  645. // // GPIOC->scr = GPIO_PINS_13; // GPIOC->odt ^= GPIO_PINS_13;
  646. //
  647. // #if(SampleModelSelect == DOUBLERESISTANCE)
  648. // // ULONG OVtimeCnt = 0;
  649. //// if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0) // if ((TIM1->CR1 & TIM_CR1_DIR) == 0) // When Counting Up
  650. // if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_ZERO )// if( (((uint8_t)DL_Timer_getTimerCount(MOTOR_PWM_INST)) & 0x10) ==0) // if ((TIM1->CR1 & TIM_CR1_DIR) == 0) // When Counting Up
  651. // {
  652. //
  653. // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_Z_SET);// tmr_flag_clear(TMR1,TMR_OVF_FLAG);//
  654. // // gpio_bits_reset(GPIOC,GPIO_PINS_15);
  655. // if(( Samp_Step==0) ||( Samp_Step>=4))
  656. // Samp_Step=1;
  657. // else
  658. // Samp_Step++;
  659. // switch (Samp_Step)
  660. // {
  661. // case 1:
  662. //// adc_enable(ADC1,TRUE);
  663. // // GPIOB->odt ^= GPIO_PINS_11;
  664. // /* Set Rdson sample trigger */
  665. // //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦
  666. // /* ADC1 regular channel trigger */
  667. //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  668. //
  669. // tbc_voUpIsr();
  670. //
  671. // break;
  672. // case 3:
  673. // /* ADC Rdson calibration with single resistance*/
  674. // if (TimingDelay != 0)
  675. // {
  676. // TimingDelay--;
  677. // }
  678. // break;
  679. // default:
  680. //
  681. // break;
  682. // }
  683. //
  684. //// gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15;
  685. //// /* ADC1 regular channel trigger */
  686. //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  687. //// tbc_voUpIsr();
  688. //// tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update);
  689. // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE))
  690. // {
  691. // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE)
  692. // {
  693. // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ;
  694. // IO_FORWARDLED_ON(); //寮�鍓嶇伅
  695. // BikeLedGloFun.blBike_ForwardLedSta=TRUE;
  696. // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++;
  697. // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64)
  698. // {
  699. // BikeLedGloFun.blBike_ForwardLedStart=FALSE;
  700. // }
  701. // }
  702. // }
  703. // if(( BikeLedGloFun.blBike_BackLedSta==TRUE) &&(BikeLedGloFun.blBike_BackLedStart==TRUE))
  704. // {
  705. // if( BikeLedGloFun.blBike_BackLedDetErr==TRUE)
  706. //
  707. // {
  708. // BikeLedGloFun.blBike_BackLedDetErr=FALSE;
  709. // IO_BACKLED_ON();
  710. // BikeLedGloFun.uwBike_BackLedDetErrTime++;
  711. // if( BikeLedGloFun.uwBike_BackLedDetErrTime>=64)
  712. // {
  713. // BikeLedGloFun.blBike_BackLedStart=FALSE;
  714. // }
  715. // }
  716. // }
  717. // }
  718. // else if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_LOAD )
  719. // {
  720. // // gpio_bits_set(GPIOC,GPIO_PINS_15);
  721. //// if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_LOAD )// DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);// tmr_flag_clear(TMR1,TMR_OVF_FLAG);//
  722. // //---------------------------
  723. // Samp_Step++;
  724. // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);//
  725. // switch (Samp_Step)
  726. // {
  727. // case 2:
  728. // // gpio_bits_set(GPIOB,GPIO_PINS_11);
  729. //// adc_enable(ADC1,FALSE);//
  730. // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1;
  731. // // gpio_bits_reset(GPIOB,GPIO_PINS_11);
  732. // #if(JSCOPE_EN!=0)
  733. // Jscope_WtiteData();
  734. // #endif
  735. // break;
  736. // case 4:
  737. // // GPIOC->odt ^= GPIO_PINS_13;
  738. //
  739. // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  740. // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  741. // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  742. // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  743. // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  744. // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  745. // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  746. //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  747. //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  748. //
  749. // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_0_INDEX); //B
  750. // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_2_INDEX);//C
  751. // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_3_INDEX);//A
  752. //// adc_enable(ADC1,TRUE);//
  753. // break;
  754. // default:
  755. //
  756. // break;
  757. // }
  758. //
  759. // // adc_enable(ADC1,TRUE);// ADC_Cmd(ADC1, ENABLE);
  760. //// gpio_bits_set(GPIOC,GPIO_PINS_15);
  761. //// tmr_counter_value_set(TMR6,0); // TIM4->CNT = 0;
  762. //// adc_enable(ADC1,FALSE);// ADC_Cmd(ADC1, DISABLE); //鍏抽棴ADC瑙勫垯缁�
  763. //// tbc_voDownIsr();
  764. //// while ((tmr_counter_value_get(TMR6) < (HW_PWM_PERIOD)) && (OVtimeCnt < ((HW_HHPWM_PERIOD * FPWM_HZ)))) //36M clk
  765. //// {
  766. //// OVtimeCnt++;
  767. //// };
  768. ////
  769. //// /* Load PWM Compare value */
  770. //// hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  771. //// hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  772. //// hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  773. //// hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  774. //// hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  775. //// hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  776. //// /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  777. //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  778. //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  779. ////
  780. //// adc_enable(ADC1,TRUE);// ADC_Cmd(ADC1, ENABLE);
  781. ////
  782. //// tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update);
  783. // }
  784. // else
  785. // {
  786. // if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_FAULT )
  787. // {
  788. // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_F_SET);//
  789. // GCnt++;
  790. // hw_voPWMOff();
  791. // }
  792. //
  793. // }
  794. //
  795. //
  796. //#elif(SampleModelSelect == COMBINATION)
  797. //
  798. // // ULONG OVtimeCnt = 0;
  799. //
  800. // if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// When Counting Up 璁℃暟鍣ㄥ悜涓婅鏁帮紝鐜板湪娉㈣胺
  801. // {
  802. // tmr_flag_clear(TMR1,TMR_OVF_FLAG);//
  803. // // gpio_bits_reset(GPIOC,GPIO_PINS_15);
  804. // if(( Samp_Step==0) ||( Samp_Step>=4))
  805. // Samp_Step=1;
  806. // else
  807. // Samp_Step++;
  808. // switch (Samp_Step)
  809. // {
  810. // case 1:
  811. // adc_enable(ADC1,TRUE);
  812. // // GPIOB->odt ^= GPIO_PINS_11;
  813. // /* Set Rdson sample trigger */
  814. // TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦
  815. // /* ADC1 regular channel trigger */
  816. // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  817. //
  818. // tbc_voUpIsr();
  819. //
  820. // break;
  821. // case 3:
  822. // /* ADC Rdson calibration with single resistance*/
  823. //
  824. // break;
  825. // default:
  826. //
  827. // break;
  828. // }
  829. //
  830. //
  831. // #if(JSCOPE_EN!=0)
  832. // Jscope_WtiteData();
  833. // #endif
  834. // }
  835. // else //鍚戜笅璁℃暟锛屾尝宄�
  836. // {
  837. // // gpio_bits_set(GPIOC,GPIO_PINS_15);
  838. // tmr_flag_clear(TMR1,TMR_OVF_FLAG);//
  839. // //---------------------------
  840. // Samp_Step++;
  841. //
  842. // switch (Samp_Step)
  843. // {
  844. // case 2:
  845. // // gpio_bits_set(GPIOB,GPIO_PINS_11);
  846. // adc_enable(ADC1,FALSE);//
  847. // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1;
  848. // // gpio_bits_reset(GPIOB,GPIO_PINS_11);
  849. // break;
  850. // case 4:
  851. // // GPIOC->odt ^= GPIO_PINS_13;
  852. // adc_enable(ADC1,TRUE);//
  853. //// if(tmpSigRTrigZ1>700)
  854. //// {
  855. //// TMR1->c4dt= tmpSigRTrigZ1;///TIM_SetCompare4(TIM1, tmpSigRTrigZ1);
  856. //// }
  857. //// else
  858. //// {
  859. //// TMR1->c4dt= 1500;
  860. //// }
  861. // TMR1->c4dt= tmpSigRTrigZ1;
  862. // tmpSigRTrigZ1 = pwm_stGenOut.uwSigRTrig;
  863. // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  864. // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  865. // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  866. // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  867. // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  868. // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  869. // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  870. // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  871. // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  872. //
  873. // break;
  874. // default:
  875. //
  876. // break;
  877. // }
  878. //
  879. //
  880. // //---------------------------
  881. //
  882. //
  883. //// tmr_counter_value_set(TMR6,0); // TIM4->CNT = 0;
  884. //// gpio_bits_set(GPIOC,GPIO_PINS_15);
  885. //// adc_enable(ADC1,FALSE);//
  886. ////
  887. //// tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣
  888. ////
  889. //// while ((tmr_counter_value_get(TMR6) < (HW_PWM_PERIOD)) && (OVtimeCnt < ((HW_HHPWM_PERIOD * FPWM_HZ)))) //36M clk
  890. //// {
  891. //// OVtimeCnt++;
  892. //// };
  893. ////
  894. //// /* Set Ibus sample trigger */
  895. //// adc_enable(ADC1,TRUE);// ADC_Cmd(ADC2, ENABLE);
  896. //// TMR1->c4dt= 500;// tmpSigRTrigZ1;///TIM_SetCompare4(TIM1, tmpSigRTrigZ1);
  897. //// tmpSigRTrigZ1 = pwm_stGenOut.uwSigRTrig;
  898. //// /* Load PWM Compare value */
  899. //// hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  900. //// hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  901. //// hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  902. //// hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  903. //// hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  904. //// hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  905. //// /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  906. //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  907. //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  908. ////
  909. //// adc_enable(ADC1,TRUE);//
  910. //
  911. //
  912. // }
  913. //
  914. //
  915. //#endif
  916. // }
  917. // BrkFlg++;
  918. /* add user code end TMR1_BRK_OVF_TRG_HALL_IRQ 0 */
  919. /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 1 */
  920. /* add user code end TMR1_BRK_OVF_TRG_HALL_IRQ 1 */
  921. }
  922. /**
  923. * @brief this function handles TMR1 channel handler.
  924. * @param none
  925. * @retval none
  926. */
  927. //void TMR1_CH_IRQHandler(void)
  928. //{
  929. // /* add user code begin TMR1_CH_IRQ 0 */
  930. // // if(tmr_interrupt_flag_get(TMR1,TMR_OVF_FLAG))
  931. // // {
  932. //// if(tmr_cnt_dir_get(TMR1))
  933. //// {
  934. //// gpio_bits_set(Break_GPIO_PORT,Break_PIN);
  935. //// }else{
  936. //// gpio_bits_reset(Break_GPIO_PORT,Break_PIN);
  937. //// }
  938. // //Break_GPIO_PORT->odt ^= Break_PIN;
  939. // // }
  940. //
  941. //
  942. // /* add user code end TMR1_CH_IRQ 0 */
  943. // /* add user code begin TMR1_CH_IRQ 1 */
  944. //
  945. // /* add user code end TMR1_CH_IRQ 1 */
  946. //}
  947. /**
  948. * @brief this function handles TMR3 handler.
  949. * @param none
  950. * @retval none
  951. */
  952. void GROUP1_IRQHandler(void) //void TMR3_GLOBAL_IRQHandler(void)
  953. {
  954. uint32_t gpioA = DL_GPIO_getEnabledInterruptStatus(GPIOA, DL_GPIO_PIN_26);
  955. //BAT灯
  956. #if 0
  957. if ((gpioA & DL_GPIO_PIN_26) == DL_GPIO_PIN_26)
  958. {
  959. if(BikeLedCheck_F.uwBike_OpenLedEn!=0)
  960. {
  961. BikeLedCheck_F.uwBikeLight_PWM=0;
  962. CLMPF++;
  963. }
  964. else
  965. {
  966. if( BikeLedCheck_F.blBike_LedSta==TRUE)
  967. {
  968. if(BikeLedCheck_F.uwBike_OpenPreTime<=2)
  969. {
  970. BikeLedCheck_F.uwBike_OpenPreTime=2;
  971. CMPF++;
  972. BikeLedCheck_F.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM;
  973. }
  974. }
  975. }
  976. if( BikeLedCheck_F.blBike_LedSta==TRUE)
  977. BikeLedCheck_F.blBike_LedCurErr=TRUE;
  978. CHMPF++;
  979. DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_26);
  980. }
  981. #endif
  982. /* add user code begin TMR3_GLOBAL_IRQ 0 */
  983. #if 0
  984. if( ((gpioA & DL_GPIO_PIN_8) == DL_GPIO_PIN_8) || ((gpioB & DL_GPIO_PIN_3) == DL_GPIO_PIN_3) ||((gpioB & DL_GPIO_PIN_2) == DL_GPIO_PIN_2))
  985. {
  986. HGcnt++;
  987. switchhall_voTim3Int();
  988. DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_8);
  989. DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_3);
  990. DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_2);
  991. }
  992. #endif
  993. /* add user code end TMR3_GLOBAL_IRQ 0 */
  994. /* add user code begin TMR3_GLOBAL_IRQ 1 */
  995. /* add user code end TMR3_GLOBAL_IRQ 1 */
  996. /*
  997. * Get the pending interrupt for the GPIOA port and store for
  998. * comparisons later
  999. */
  1000. }
  1001. /**
  1002. * @brief this function handles TMR16 handler.
  1003. * @param none
  1004. * @retval none
  1005. */
  1006. //void SPEED_INST_IRQHandler(void) //void TMR16_GLOBAL_IRQHandler(void)
  1007. //{
  1008. //
  1009. // /* add user code begin TMR16_GLOBAL_IRQ 0 */
  1010. ////Bike Speed
  1011. // UWORD uwIntSource = 0;
  1012. //
  1013. //
  1014. // switch (DL_TimerG_getPendingInterrupt(SPEED_INST))
  1015. // {
  1016. // case DL_TIMER_IIDX_CC0_DN:
  1017. // SPEED_edgeCapture = DL_Timer_getCaptureCompareValue(SPEED_INST, DL_TIMER_CC_0_INDEX);
  1018. //
  1019. //// tmr_flag_clear(TMR16,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC4);
  1020. // uwIntSource = 3;
  1021. // // tempIO2 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11);
  1022. //// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_8))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11))
  1023. // {
  1024. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1025. // }
  1026. //// else
  1027. // {
  1028. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1029. // }
  1030. //
  1031. // // bikespeed_voBikeSpeedCal(uwIntSource);
  1032. //
  1033. // break;
  1034. // case DL_TIMER_IIDX_ZERO:
  1035. // uwIntSource = 1;
  1036. // /* TBS interrupt */
  1037. // // tbs_voIsr();
  1038. //
  1039. // /* CadenceCal and BikespeedCal */
  1040. //
  1041. // // bikespeed_voBikeSpeedCal(uwIntSource);
  1042. // DCnt++;
  1043. // break;
  1044. // default:
  1045. // break;
  1046. // }
  1047. //
  1048. //
  1049. //// if(tmr_flag_get(TMR16,TMR_OVF_FLAG))// if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update))
  1050. //// {
  1051. //// tmr_flag_clear(TMR16,TMR_OVF_FLAG);//
  1052. //// uwIntSource = 1;
  1053. //// /* TBS interrupt */
  1054. //// tbs_voIsr();
  1055. ////
  1056. //// /* CadenceCal and BikespeedCal */
  1057. ////
  1058. //// bikespeed_voBikeSpeedCal(uwIntSource);
  1059. ////
  1060. //// }
  1061. //// else if (tmr_flag_get(TMR16,TMR_C1_FLAG))//(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC4))
  1062. //// {
  1063. //// tmr_flag_clear(TMR16,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC4);
  1064. //// uwIntSource = 3;
  1065. //// // tempIO2 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11);
  1066. //// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_8))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11))
  1067. //// {
  1068. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1069. //// }
  1070. //// else
  1071. //// {
  1072. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1073. //// }
  1074. ////
  1075. //// bikespeed_voBikeSpeedCal(uwIntSource);
  1076. //// }
  1077. // /* add user code end TMR16_GLOBAL_IRQ 0 */
  1078. // /* add user code begin TMR16_GLOBAL_IRQ 1 */
  1079. //
  1080. // /* add user code end TMR16_GLOBAL_IRQ 1 */
  1081. //}
  1082. /**
  1083. * @brief this function handles TMR17 handler.
  1084. * @param none
  1085. * @retval none
  1086. */
  1087. //void TAPIN_INST_IRQHandler(void)//void TMR17_GLOBAL_IRQHandler(void)
  1088. //{
  1089. // /* add user code begin TMR17_GLOBAL_IRQ 0 */
  1090. ////韪忛牷
  1091. //UWORD uwIntSource = 0;
  1092. //
  1093. //
  1094. // switch (DL_TimerG_getPendingInterrupt(TAPIN_INST))
  1095. // {
  1096. // case DL_TIMERG_IIDX_CC0_DN:
  1097. // TIPIN_edgeCapture = DL_Timer_getCaptureCompareValue(TAPIN_INST, DL_TIMER_CC_0_INDEX);
  1098. // uwIntSource = 2;
  1099. // // tempIO1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10);
  1100. // // if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_9))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
  1101. // // {
  1102. // // tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1103. // // }
  1104. // // else
  1105. // // {
  1106. // // tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1107. // // }
  1108. // cadence_voCadenceCal(uwIntSource);
  1109. //
  1110. // break;
  1111. // case DL_TIMER_IIDX_ZERO:
  1112. // uwIntSource = 1;
  1113. // /* TBS interrupt */
  1114. // // tbs_voIsr();
  1115. //
  1116. // /* CadenceCal and BikespeedCal */
  1117. // cadence_voCadenceCal(uwIntSource);
  1118. // ECnt++;
  1119. // break;
  1120. // default:
  1121. // break;
  1122. // }
  1123. //
  1124. //// if(tmr_flag_get(TMR17,TMR_OVF_FLAG))// if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update))
  1125. //// {
  1126. //// uwIntSource = 1;
  1127. //// /* TBS interrupt */
  1128. //// // tbs_voIsr();
  1129. ////
  1130. //// /* CadenceCal and BikespeedCal */
  1131. //// cadence_voCadenceCal(uwIntSource);
  1132. ////
  1133. //// tmr_flag_clear(TMR17,TMR_OVF_FLAG);// TIM_ClearFlag(TIM2, TIM_FLAG_Update);
  1134. //// }
  1135. //// else if (tmr_flag_get(TMR17,TMR_C1_FLAG))//(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC3))
  1136. //// {
  1137. //// uwIntSource = 2;
  1138. //// // tempIO1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10);
  1139. ////// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_9))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
  1140. ////// {
  1141. ////// tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1142. ////// }
  1143. ////// else
  1144. ////// {
  1145. ////// tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1146. ////// }
  1147. //// cadence_voCadenceCal(uwIntSource);
  1148. //// tmr_flag_clear(TMR17,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC3);
  1149. //// }
  1150. ////
  1151. //// /* add user code end TMR17_GLOBAL_IRQ 0 */
  1152. //// /* add user code begin TMR17_GLOBAL_IRQ 1 */
  1153. ////
  1154. //// /* add user code end TMR17_GLOBAL_IRQ 1 */
  1155. //}
  1156. /**
  1157. * @brief this function handles USART1 handler.
  1158. * @param none
  1159. * @retval none
  1160. */
  1161. void UART0_IRQHandler(void)
  1162. {
  1163. // USARTx_Rx_IRQ(&UART_RxBuff_Struct_OBC);
  1164. // USARTx_Tx_IRQ(&UART_TxBuff_Struct_OBC);
  1165. USARTx_RxTX_IRQ(&UART_RxBuff_Struct_OBC,&UART_TxBuff_Struct_OBC,&stUSART_FrameBuf_OBC);
  1166. }
  1167. //
  1168. ///**
  1169. // * @brief this function handles USART2 handler.
  1170. // * @param none
  1171. // * @retval none
  1172. // */
  1173. //void UART_BAT_INST_IRQHandler(void)
  1174. //{
  1175. // USARTx_Rx_IRQ(&UART_RxBuff_Struct_BMS);
  1176. // USARTx_Tx_IRQ(&UART_TxBuff_Struct_BMS);
  1177. //}
  1178. //
  1179. ULONG id = 0;
  1180. void MCAN0_INST_IRQHandler(void)
  1181. {
  1182. volatile ULONG gInterruptLine1Status = 0;
  1183. DL_MCAN_RxFIFOStatus rxFS;
  1184. switch (DL_MCAN_getPendingInterrupt(MCAN0_INST)) {
  1185. case DL_MCAN_IIDX_LINE1:
  1186. /* Check MCAN interrupts fired during TX/RX of CAN package */
  1187. gInterruptLine1Status |= DL_MCAN_getIntrStatus(MCAN0_INST);
  1188. DL_MCAN_clearIntrStatus(MCAN0_INST, gInterruptLine1Status,DL_MCAN_INTR_SRC_MCAN_LINE_1);
  1189. if ((gInterruptLine1Status & MCAN_IR_RF0N_MASK) == MCAN_IR_RF0N_MASK)
  1190. {
  1191. rxFS.fillLvl = 0;
  1192. rxFS.num = DL_MCAN_RX_FIFO_NUM_0;
  1193. while ((rxFS.fillLvl) == 0)
  1194. {
  1195. DL_MCAN_getRxFIFOStatus(MCAN0_INST, &rxFS);
  1196. }
  1197. DL_MCAN_readMsgRam(MCAN0_INST, DL_MCAN_MEM_TYPE_FIFO, 0U, rxFS.num, pRxMsg);
  1198. DL_MCAN_writeRxFIFOAck(MCAN0_INST, rxFS.num, rxFS.getIdx);
  1199. if(pRxMsg->xtd == 0)
  1200. {
  1201. id = ((pRxMsg->id) & 0x1FFC0000)>>18;
  1202. }
  1203. else
  1204. {
  1205. id = pRxMsg->id & 0x1FFFFFFF;
  1206. }
  1207. if(pRxMsg->xtd == ID_MODE_STANDARD)
  1208. {
  1209. //11-bit standard identifier
  1210. switch (id)
  1211. {
  1212. case ID_PBU_BC:
  1213. case ID_PBU_TO_MC: //接收PBU数据
  1214. {
  1215. CAN_RxBuf_Struct_PBU.ulBufID = id;
  1216. CAN_Rx_ISR(&CAN_RxBuf_Struct_PBU, pRxMsg->dlc);
  1217. break;
  1218. }
  1219. case ID_BMS_BC:
  1220. case ID_BMS_TO_MC: //接收BMS数据
  1221. {
  1222. CAN_RxBuf_Struct_BMS.ulBufID = id;
  1223. CAN_Rx_ISR(&CAN_RxBuf_Struct_BMS, pRxMsg->dlc);
  1224. break;
  1225. }
  1226. case ID_HMI_BC:
  1227. case ID_HMI_TO_MC: //接收HMI数据
  1228. {
  1229. CAN_RxBuf_Struct_HMI.ulBufID = id;
  1230. CAN_Rx_ISR(&CAN_RxBuf_Struct_HMI, pRxMsg->dlc);
  1231. break;
  1232. }
  1233. case ID_CDL_BC:
  1234. case ID_CDL_TO_MC: // case ID_CDL_TO_MC_TE://接收CDL数据
  1235. {
  1236. CAN_RxBuf_Struct_CDL.ulBufID = id;
  1237. CAN_Rx_ISR(&CAN_RxBuf_Struct_CDL, pRxMsg->dlc);
  1238. break;
  1239. }
  1240. default:
  1241. break;
  1242. }
  1243. }
  1244. else
  1245. {
  1246. //29-bit extended identifier
  1247. }
  1248. gInterruptLine1Status &= ~(MCAN_IR_RF0N_MASK);
  1249. }
  1250. break;
  1251. default:
  1252. break;
  1253. }
  1254. }
  1255. ///**
  1256. // * @brief this function handles EXINT Line 1 & 0 handler.
  1257. // * @param none
  1258. // * @retval none
  1259. // */
  1260. //void EXINT1_0_IRQHandler(void)
  1261. //{
  1262. // UWORD lightCnt=0;
  1263. // UWORD lightCntTime=0;
  1264. // UWORD lightTime=0;
  1265. // UWORD BacklightTime=0;
  1266. //
  1267. // /* add user code begin EXINT1_0_IRQ 0 */
  1268. // if(exint_interrupt_flag_get(EXINT_LINE_0) != RESET)
  1269. // {
  1270. //
  1271. // for(lightCnt=0;lightCnt<=12;lightCnt++)
  1272. // {
  1273. // if(IO_FORWARDLEDCHECK_PORT()==0)
  1274. // lightCntTime++;
  1275. // }
  1276. //
  1277. // if(lightCntTime>=(11))
  1278. // {
  1279. // IO_FORWARDLED_OFF();
  1280. // BikeLedGloFun.blBike_ForwardLedDetErr=TRUE;
  1281. // lightCntTime=0;
  1282. // }
  1283. // exint_flag_clear(EXINT_LINE_0);
  1284. // }
  1285. // /* add user code end EXINT1_0_IRQ 0 */
  1286. // /* add user code begin EXINT1_0_IRQ 1 */
  1287. // if(exint_interrupt_flag_get(EXINT_LINE_1) != RESET)
  1288. // {
  1289. // for(lightTime=0;lightTime<=12;lightTime++)//40
  1290. // {
  1291. // if(IO_BACKLEDCHECK_PORT()==0)
  1292. // BacklightTime++;
  1293. // }
  1294. // if(BacklightTime>=(11))
  1295. // {
  1296. // IO_BACKLED_OFF();
  1297. // BikeLedGloFun.blBike_BackLedDetErr=TRUE ;
  1298. // BacklightTime=0;
  1299. // }
  1300. //
  1301. // exint_flag_clear(EXINT_LINE_1);
  1302. // }
  1303. // /* add user code end EXINT1_0_IRQ 1 */
  1304. //}
  1305. void TIMA1_IRQHandler(void) //void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void)
  1306. {
  1307. switch (DL_TimerA_getPendingInterrupt(TIMA1))
  1308. {
  1309. case DL_TIMER_IIDX_ZERO:
  1310. {
  1311. if(( Samp_Step==0) ||( Samp_Step>=4))
  1312. {
  1313. Samp_Step=1;
  1314. }
  1315. else
  1316. {
  1317. Samp_Step++;
  1318. }
  1319. switch (Samp_Step)
  1320. {
  1321. case 1:
  1322. {
  1323. // DL_GPIO_setPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_LED_B_EN_PIN);
  1324. tbc_voUpIsr();
  1325. // DL_GPIO_clearPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_LED_B_EN_PIN);
  1326. break;
  1327. }
  1328. case 3:
  1329. {
  1330. if(cp_ulSystickCnt > 3000)
  1331. {
  1332. Tmag5273_out.Angle = tmag5273_GetAngle();
  1333. }
  1334. break;
  1335. }
  1336. default:
  1337. break;
  1338. }
  1339. break;
  1340. }
  1341. case DL_TIMER_IIDX_LOAD:
  1342. {
  1343. Samp_Step++;
  1344. switch (Samp_Step)
  1345. {
  1346. case 2:
  1347. {
  1348. // DL_GPIO_setPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_LED_B_EN_PIN);
  1349. tbc_voDownIsr();
  1350. // DL_GPIO_clearPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_LED_B_EN_PIN);
  1351. GCnt++;
  1352. if(bikespeed_stFreGetOut.uwCaputureOverflowCnt<60000)
  1353. {
  1354. bikespeed_stFreGetOut.uwCaputureOverflowCnt++;
  1355. }
  1356. if(cadence_stFreGetOut.uwCaputureOverflowCnt<60000)
  1357. {
  1358. cadence_stFreGetOut.uwCaputureOverflowCnt++;
  1359. }
  1360. tbs_voIsr();//20241017
  1361. TIMER_CC_A_INDEX(pwm_stGenOut.uwNewTIM1COMPR[0]);
  1362. TIMER_CC_B_INDEX(pwm_stGenOut.uwNewTIM1COMPR[1]);
  1363. TIMER_CC_C_INDEX(pwm_stGenOut.uwNewTIM1COMPR[2]);
  1364. #if(JSCOPE_EN!=0)
  1365. Jscope_WtiteData();
  1366. #endif
  1367. // DL_GPIO_clearPins(GPIO_B_LED_PORT, GPIO_B_LED_PIN_LED_B_EN_PIN);
  1368. break;
  1369. }
  1370. case 4:
  1371. {
  1372. break;
  1373. }
  1374. default:
  1375. break;
  1376. }
  1377. break;
  1378. }
  1379. default:
  1380. break;
  1381. }
  1382. }
  1383. /* add user code begin 1 */
  1384. /* add user code end 1 */