m0g3507_int.c 58 KB

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