m0g3507_int.c 63 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693
  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. //
  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. //
  393. //
  394. // gAdcResult0[6] =
  395. // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_1);
  396. //
  397. // gAdcResult0[7] =
  398. // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_2);
  399. // gAdcResult0[8] =
  400. // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_3);
  401. // gAdcResult0[9] =
  402. // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_4);
  403. // GPIOC->odt ^= GPIO_PINS_13;
  404. // GPIOC->odt ^= GPIO_PINS_15;
  405. // IO_PC10_TEST_ENABLE; //PC10鎵撳嵃鎸囩ず
  406. // if( (((uint8_t)DL_Timer_getTimerCount(MOTOR_PWM_INST)) & 0x10) ==0)// if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// //TIME1 鍚戜笂璁℃暟璇诲彇鐩哥數娴丄D鍊�
  407. {
  408. // GPIOC->odt ^= GPIO_PINS_13;
  409. // if(hw_blPWMOnFlg == TRUE)
  410. {
  411. #if((IPM_POWER_SEL == IPM_POWER_250W_6G) ||(IPM_POWER_SEL ==IPM_POWER_350W_6G))
  412. adc_uwRdsonUReg =RDSON_U_REG();// DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);//
  413. adc_uwRdsonVReg =RDSON_V_REG();//
  414. #else
  415. // adc_uwRdsonUReg =RDSON_U_REG();// DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);//
  416. adc_uwRdsonVReg = RDSON_V_REG();//
  417. adc_uwRdsonWReg = RDSON_W_REG();//
  418. #endif
  419. }
  420. // else
  421. // {
  422. // adc_uwRdsonUReg =adc_stCof.uwIaOffset;//
  423. // adc_uwRdsonVReg =adc_stCof.uwIbOffset;//
  424. // adc_uwRdsonWReg = adc_stCof.uwIcOffset;//
  425. // }
  426. }
  427. // adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇�
  428. // IO_PC10_TEST_DISABLE; //PC10鎵撳嵃鎸囩ず
  429. }
  430. #elif(SampleModelSelect == COMBINATION)
  431. if (adc_flag_get(ADC1,ADC_PCCE_FLAG)) //ADCx->SR & 0x04 娉ㄥ叆缁勪腑鏂爣蹇�
  432. {
  433. if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// //TIME1 鍚戜笂璁℃暟璇诲彇鐩哥數娴丄D鍊�
  434. {
  435. // GPIOC->odt ^= GPIO_PINS_13;// gpio_bits_reset(GPIOC,GPIO_PINS_13);
  436. adc_uwRdsonUReg = ADC1->pdt1_bit.pdt1;//
  437. adc_uwRdsonVReg = ADC1->pdt2_bit.pdt2;//
  438. adc_uwRdsonWReg = ADC1->pdt3_bit.pdt3;//
  439. /* CH4 set to "Frozen" */
  440. TMR1->cm2 &= ~0x7000;
  441. /* CH4 set to "PWM mode 1" */
  442. TMR1->cm2 |= 0x6000;
  443. hw_SetRdsonSample(ADC_CHANNEL_6);
  444. }
  445. else
  446. {
  447. // GPIOB->odt ^= GPIO_PINS_11; // gpio_bits_set(GPIOC,GPIO_PINS_13);//
  448. if( (pwm_stGenOut.blSampleCalibFlag == TRUE)&&(TMR1->c4dt!=pwm_stGenCoef.uwHPWMPd))
  449. {
  450. adc_uwADDMAPhase1 = ADC1->pdt1_bit.pdt1;//
  451. if(pwm_stGenOut.uwSingelRSampleArea == SampleA)
  452. {
  453. adc_uwIaReg = ADC1->pdt2_bit.pdt2;////
  454. GPIOC->odt ^= GPIO_PINS_15;
  455. }
  456. if(pwm_stGenOut.uwSingelRSampleArea == SampleB)
  457. {
  458. adc_uwIbReg = ADC1->pdt3_bit.pdt3;//
  459. }
  460. }
  461. // /* CH4 set to "Frozen" */
  462. TMR1->cm2 &= ~0x7000;
  463. // /* CH4 set to "PWM mode 2" */
  464. TMR1->cm2 |= 0x7000;
  465. //
  466. hw_SetIphaseSample();
  467. // adc_enable(ADC1,FALSE);
  468. //
  469. // adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇�
  470. }
  471. adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇�
  472. }
  473. #endif
  474. /* add user code end ADC1_CMP_IRQ 0 */
  475. /* add user code begin ADC1_CMP_IRQ 1 */
  476. /* add user code end ADC1_CMP_IRQ 1 */
  477. }
  478. /**
  479. * @brief this function handles TMR1 brake overflow trigger and hall handler.
  480. * @param none
  481. * @retval none
  482. */
  483. UWORD tmpSigRTrigZ1 = 0;
  484. UWORD SampUpTige = 0;
  485. UWORD SampDowmTige = 0;
  486. UWORD Samp_Step =0;
  487. void MOTOR_PWM_INST_IRQHandler(void) //void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void)
  488. {
  489. // ECnt++;
  490. /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 0 */
  491. //if(0)//if(tmr_flag_get(TMR1,TMR_BRK_FLAG))//if (TIM_GetFlagStatus(TIM1, TIM_FLAG_Break))
  492. // {
  493. //// tmr_flag_clear(TMR1,TMR_BRK_FLAG);//TIM_ClearFlag(TIM1, TIM_FLAG_Break);
  494. //
  495. // }
  496. // IO_CHECKIO_H();
  497. switch (DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST))
  498. {
  499. case DL_TIMER_IIDX_FAULT:
  500. FCnt++;
  501. //DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_31);
  502. DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_0_INDEX);
  503. DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_1_INDEX);
  504. DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_2_INDEX);
  505. hw_voPWMOff();
  506. // IO_FTESTLED_ON(); //
  507. alm_unCode.bit.IPMFlt = TRUE;
  508. break;
  509. case DL_TIMER_IIDX_ZERO:
  510. ECnt++;
  511. // if(( Samp_Step==0) ||( Samp_Step>=4))
  512. // Samp_Step=1;
  513. // else
  514. // Samp_Step++;
  515. // switch (Samp_Step)
  516. // {
  517. // case 1:
  518. //// adc_enable(ADC1,TRUE);
  519. // // GPIOB->odt ^= GPIO_PINS_11;
  520. // /* Set Rdson sample trigger */
  521. // //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦
  522. // /* ADC1 regular channel trigger */
  523. //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  524. //
  525. // tbc_voUpIsr();
  526. // // DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN);
  527. // break;
  528. // case 3:
  529. // /* ADC Rdson calibration with single resistance*/
  530. // if (TimingDelay != 0)
  531. // {
  532. // TimingDelay--;
  533. // }
  534. // if(bikespeed_stFreGetOut.uwCaputureOverflowCnt<60000)
  535. // bikespeed_stFreGetOut.uwCaputureOverflowCnt++; //
  536. // cadence_stFreGetOut.uwCaputureOverflowCnt++;
  537. // tbs_voIsr();//20241017
  538. //// if(BikeLedGloFun.blBike_ForwardLedSta==TRUE)
  539. //// {
  540. //// BikeLedGloFun.uwBikeLight_L_PWM +=100;
  541. //// if(BikeLedGloFun.uwBikeLight_L_PWM>720)
  542. //// {
  543. //// BikeLedGloFun.uwBikeLight_L_PWM=720;
  544. //// }
  545. ////
  546. //// BikeLedGloFun.uwBikeLight_F_PWM +=100;
  547. //// if(BikeLedGloFun.uwBikeLight_F_PWM>1800)
  548. //// {
  549. //// BikeLedGloFun.uwBikeLight_F_PWM=1800;
  550. //// }
  551. //// DL_TimerG_setCaptureCompareValue(PWM_2_INST, BikeLedGloFun.uwBikeLight_L_PWM, GPIO_PWM_2_C1_IDX);
  552. //// DL_TimerG_setCaptureCompareValue(PWM_3_INST, BikeLedGloFun.uwBikeLight_F_PWM, GPIO_PWM_3_C1_IDX);//max=1800
  553. //// }
  554. // break;
  555. // default:
  556. //
  557. // break;
  558. // }
  559. // gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15;
  560. // /* ADC1 regular channel trigger */
  561. // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  562. // tbc_voUpIsr();
  563. // tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update);
  564. // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE))
  565. // {
  566. // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE)
  567. // {
  568. // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ;
  569. // IO_FORWARDLED_ON(); //寮�鍓嶇伅
  570. // BikeLedGloFun.blBike_ForwardLedSta=TRUE;
  571. // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++;
  572. // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64)
  573. // {
  574. // BikeLedGloFun.blBike_ForwardLedStart=FALSE;
  575. // }
  576. // }
  577. // }
  578. // if(( BikeLedGloFun.blBike_BackLedSta==TRUE) &&(BikeLedGloFun.blBike_BackLedStart==TRUE))
  579. // {
  580. // if( BikeLedGloFun.blBike_BackLedDetErr==TRUE)
  581. //
  582. // {
  583. // BikeLedGloFun.blBike_BackLedDetErr=FALSE;
  584. // IO_BACKLED_ON();
  585. // BikeLedGloFun.uwBike_BackLedDetErrTime++;
  586. // if( BikeLedGloFun.uwBike_BackLedDetErrTime>=64)
  587. // {
  588. // BikeLedGloFun.blBike_BackLedStart=FALSE;
  589. // }
  590. // }
  591. // }
  592. break;
  593. case DL_TIMER_IIDX_LOAD:
  594. // GCnt++;
  595. // DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN);
  596. // Samp_Step++;
  597. //// DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);//
  598. // switch (Samp_Step)
  599. // {
  600. // case 2:
  601. // // gpio_bits_set(GPIOB,GPIO_PINS_11);
  602. // // adc_enable(ADC1,FALSE);//
  603. // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1;
  604. // // gpio_bits_reset(GPIOB,GPIO_PINS_11);
  605. // #if(JSCOPE_EN!=0)
  606. // Jscope_WtiteData();
  607. // #endif
  608. // break;
  609. // case 4:
  610. // // GPIOC->odt ^= GPIO_PINS_13;
  611. //
  612. // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  613. // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  614. // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  615. // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  616. // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  617. // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  618. // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  619. // // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  620. // // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  621. //
  622. //// pwm_stGenOut.uwNewTIM1COMPR[0]=900 ;
  623. //// pwm_stGenOut.uwNewTIM1COMPR[1]=1250;
  624. //// pwm_stGenOut.uwNewTIM1COMPR[2]=450 ;
  625. //
  626. //
  627. // TIMER_CC_A_INDEX(pwm_stGenOut.uwNewTIM1COMPR[0]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_0_INDEX);//A
  628. // TIMER_CC_B_INDEX(pwm_stGenOut.uwNewTIM1COMPR[1]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_2_INDEX); //B
  629. // TIMER_CC_C_INDEX(pwm_stGenOut.uwNewTIM1COMPR[2]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_1_INDEX);//C
  630. //
  631. // // adc_enable(ADC1,TRUE);//
  632. // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST,2, DL_TIMER_CC_4_INDEX); //采样点设置
  633. // break;
  634. // default:
  635. //
  636. // break;
  637. // }
  638. break;
  639. default:
  640. break;
  641. }
  642. // IO_CHECKIO_L();
  643. // IO_CHECKIO_L();
  644. ////if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_ZERO )
  645. // {
  646. // // GPIOC->scr = GPIO_PINS_13; // GPIOC->odt ^= GPIO_PINS_13;
  647. //
  648. // #if(SampleModelSelect == DOUBLERESISTANCE)
  649. // // ULONG OVtimeCnt = 0;
  650. //// if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0) // if ((TIM1->CR1 & TIM_CR1_DIR) == 0) // When Counting Up
  651. // 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
  652. // {
  653. //
  654. // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_Z_SET);// tmr_flag_clear(TMR1,TMR_OVF_FLAG);//
  655. // // gpio_bits_reset(GPIOC,GPIO_PINS_15);
  656. // if(( Samp_Step==0) ||( Samp_Step>=4))
  657. // Samp_Step=1;
  658. // else
  659. // Samp_Step++;
  660. // switch (Samp_Step)
  661. // {
  662. // case 1:
  663. //// adc_enable(ADC1,TRUE);
  664. // // GPIOB->odt ^= GPIO_PINS_11;
  665. // /* Set Rdson sample trigger */
  666. // //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦
  667. // /* ADC1 regular channel trigger */
  668. //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  669. //
  670. // tbc_voUpIsr();
  671. //
  672. // break;
  673. // case 3:
  674. // /* ADC Rdson calibration with single resistance*/
  675. // if (TimingDelay != 0)
  676. // {
  677. // TimingDelay--;
  678. // }
  679. // break;
  680. // default:
  681. //
  682. // break;
  683. // }
  684. //
  685. //// gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15;
  686. //// /* ADC1 regular channel trigger */
  687. //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  688. //// tbc_voUpIsr();
  689. //// tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update);
  690. // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE))
  691. // {
  692. // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE)
  693. // {
  694. // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ;
  695. // IO_FORWARDLED_ON(); //寮�鍓嶇伅
  696. // BikeLedGloFun.blBike_ForwardLedSta=TRUE;
  697. // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++;
  698. // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64)
  699. // {
  700. // BikeLedGloFun.blBike_ForwardLedStart=FALSE;
  701. // }
  702. // }
  703. // }
  704. // if(( BikeLedGloFun.blBike_BackLedSta==TRUE) &&(BikeLedGloFun.blBike_BackLedStart==TRUE))
  705. // {
  706. // if( BikeLedGloFun.blBike_BackLedDetErr==TRUE)
  707. //
  708. // {
  709. // BikeLedGloFun.blBike_BackLedDetErr=FALSE;
  710. // IO_BACKLED_ON();
  711. // BikeLedGloFun.uwBike_BackLedDetErrTime++;
  712. // if( BikeLedGloFun.uwBike_BackLedDetErrTime>=64)
  713. // {
  714. // BikeLedGloFun.blBike_BackLedStart=FALSE;
  715. // }
  716. // }
  717. // }
  718. // }
  719. // else if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_LOAD )
  720. // {
  721. // // gpio_bits_set(GPIOC,GPIO_PINS_15);
  722. //// 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);//
  723. // //---------------------------
  724. // Samp_Step++;
  725. // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);//
  726. // switch (Samp_Step)
  727. // {
  728. // case 2:
  729. // // gpio_bits_set(GPIOB,GPIO_PINS_11);
  730. //// adc_enable(ADC1,FALSE);//
  731. // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1;
  732. // // gpio_bits_reset(GPIOB,GPIO_PINS_11);
  733. // #if(JSCOPE_EN!=0)
  734. // Jscope_WtiteData();
  735. // #endif
  736. // break;
  737. // case 4:
  738. // // GPIOC->odt ^= GPIO_PINS_13;
  739. //
  740. // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  741. // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  742. // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  743. // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  744. // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  745. // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  746. // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  747. //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  748. //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  749. //
  750. // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_0_INDEX); //B
  751. // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_2_INDEX);//C
  752. // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_3_INDEX);//A
  753. //// adc_enable(ADC1,TRUE);//
  754. // break;
  755. // default:
  756. //
  757. // break;
  758. // }
  759. //
  760. // // adc_enable(ADC1,TRUE);// ADC_Cmd(ADC1, ENABLE);
  761. //// gpio_bits_set(GPIOC,GPIO_PINS_15);
  762. //// tmr_counter_value_set(TMR6,0); // TIM4->CNT = 0;
  763. //// adc_enable(ADC1,FALSE);// ADC_Cmd(ADC1, DISABLE); //鍏抽棴ADC瑙勫垯缁�
  764. //// tbc_voDownIsr();
  765. //// while ((tmr_counter_value_get(TMR6) < (HW_PWM_PERIOD)) && (OVtimeCnt < ((HW_HHPWM_PERIOD * FPWM_HZ)))) //36M clk
  766. //// {
  767. //// OVtimeCnt++;
  768. //// };
  769. ////
  770. //// /* Load PWM Compare value */
  771. //// hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  772. //// hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  773. //// hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  774. //// hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  775. //// hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  776. //// hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  777. //// /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  778. //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  779. //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  780. ////
  781. //// adc_enable(ADC1,TRUE);// ADC_Cmd(ADC1, ENABLE);
  782. ////
  783. //// tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update);
  784. // }
  785. // else
  786. // {
  787. // if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_FAULT )
  788. // {
  789. // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_F_SET);//
  790. // GCnt++;
  791. // hw_voPWMOff();
  792. // }
  793. //
  794. // }
  795. //
  796. //
  797. //#elif(SampleModelSelect == COMBINATION)
  798. //
  799. // // ULONG OVtimeCnt = 0;
  800. //
  801. // if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// When Counting Up 璁℃暟鍣ㄥ悜涓婅鏁帮紝鐜板湪娉㈣胺
  802. // {
  803. // tmr_flag_clear(TMR1,TMR_OVF_FLAG);//
  804. // // gpio_bits_reset(GPIOC,GPIO_PINS_15);
  805. // if(( Samp_Step==0) ||( Samp_Step>=4))
  806. // Samp_Step=1;
  807. // else
  808. // Samp_Step++;
  809. // switch (Samp_Step)
  810. // {
  811. // case 1:
  812. // adc_enable(ADC1,TRUE);
  813. // // GPIOB->odt ^= GPIO_PINS_11;
  814. // /* Set Rdson sample trigger */
  815. // TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦
  816. // /* ADC1 regular channel trigger */
  817. // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  818. //
  819. // tbc_voUpIsr();
  820. //
  821. // break;
  822. // case 3:
  823. // /* ADC Rdson calibration with single resistance*/
  824. //
  825. // break;
  826. // default:
  827. //
  828. // break;
  829. // }
  830. //
  831. //
  832. // #if(JSCOPE_EN!=0)
  833. // Jscope_WtiteData();
  834. // #endif
  835. // }
  836. // else //鍚戜笅璁℃暟锛屾尝宄�
  837. // {
  838. // // gpio_bits_set(GPIOC,GPIO_PINS_15);
  839. // tmr_flag_clear(TMR1,TMR_OVF_FLAG);//
  840. // //---------------------------
  841. // Samp_Step++;
  842. //
  843. // switch (Samp_Step)
  844. // {
  845. // case 2:
  846. // // gpio_bits_set(GPIOB,GPIO_PINS_11);
  847. // adc_enable(ADC1,FALSE);//
  848. // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1;
  849. // // gpio_bits_reset(GPIOB,GPIO_PINS_11);
  850. // break;
  851. // case 4:
  852. // // GPIOC->odt ^= GPIO_PINS_13;
  853. // adc_enable(ADC1,TRUE);//
  854. //// if(tmpSigRTrigZ1>700)
  855. //// {
  856. //// TMR1->c4dt= tmpSigRTrigZ1;///TIM_SetCompare4(TIM1, tmpSigRTrigZ1);
  857. //// }
  858. //// else
  859. //// {
  860. //// TMR1->c4dt= 1500;
  861. //// }
  862. // TMR1->c4dt= tmpSigRTrigZ1;
  863. // tmpSigRTrigZ1 = pwm_stGenOut.uwSigRTrig;
  864. // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  865. // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  866. // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  867. // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  868. // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  869. // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  870. // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  871. // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  872. // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  873. //
  874. // break;
  875. // default:
  876. //
  877. // break;
  878. // }
  879. //
  880. //
  881. // //---------------------------
  882. //
  883. //
  884. //// tmr_counter_value_set(TMR6,0); // TIM4->CNT = 0;
  885. //// gpio_bits_set(GPIOC,GPIO_PINS_15);
  886. //// adc_enable(ADC1,FALSE);//
  887. ////
  888. //// tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣
  889. ////
  890. //// while ((tmr_counter_value_get(TMR6) < (HW_PWM_PERIOD)) && (OVtimeCnt < ((HW_HHPWM_PERIOD * FPWM_HZ)))) //36M clk
  891. //// {
  892. //// OVtimeCnt++;
  893. //// };
  894. ////
  895. //// /* Set Ibus sample trigger */
  896. //// adc_enable(ADC1,TRUE);// ADC_Cmd(ADC2, ENABLE);
  897. //// TMR1->c4dt= 500;// tmpSigRTrigZ1;///TIM_SetCompare4(TIM1, tmpSigRTrigZ1);
  898. //// tmpSigRTrigZ1 = pwm_stGenOut.uwSigRTrig;
  899. //// /* Load PWM Compare value */
  900. //// hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  901. //// hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  902. //// hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  903. //// hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  904. //// hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  905. //// hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  906. //// /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  907. //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  908. //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  909. ////
  910. //// adc_enable(ADC1,TRUE);//
  911. //
  912. //
  913. // }
  914. //
  915. //
  916. //#endif
  917. // }
  918. // BrkFlg++;
  919. /* add user code end TMR1_BRK_OVF_TRG_HALL_IRQ 0 */
  920. /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 1 */
  921. /* add user code end TMR1_BRK_OVF_TRG_HALL_IRQ 1 */
  922. }
  923. /**
  924. * @brief this function handles TMR1 channel handler.
  925. * @param none
  926. * @retval none
  927. */
  928. //void TMR1_CH_IRQHandler(void)
  929. //{
  930. // /* add user code begin TMR1_CH_IRQ 0 */
  931. // // if(tmr_interrupt_flag_get(TMR1,TMR_OVF_FLAG))
  932. // // {
  933. //// if(tmr_cnt_dir_get(TMR1))
  934. //// {
  935. //// gpio_bits_set(Break_GPIO_PORT,Break_PIN);
  936. //// }else{
  937. //// gpio_bits_reset(Break_GPIO_PORT,Break_PIN);
  938. //// }
  939. // //Break_GPIO_PORT->odt ^= Break_PIN;
  940. // // }
  941. //
  942. //
  943. // /* add user code end TMR1_CH_IRQ 0 */
  944. // /* add user code begin TMR1_CH_IRQ 1 */
  945. //
  946. // /* add user code end TMR1_CH_IRQ 1 */
  947. //}
  948. /**
  949. * @brief this function handles TMR3 handler.
  950. * @param none
  951. * @retval none
  952. */
  953. void GROUP1_IRQHandler(void) //void TMR3_GLOBAL_IRQHandler(void)
  954. {
  955. // switch (DL_COMP_getPendingInterrupt(COMP_0_INST)) { // over Cur
  956. // case DL_COMP_IIDX_OUTPUT_EDGE:
  957. //
  958. // hw_voPWMOff();
  959. // // IO_FTESTLED_ON();
  960. //
  961. // alm_unCode.bit.IPMFlt = TRUE;
  962. //
  963. // break;
  964. // case DL_COMP_IIDX_OUTPUT_EDGE_INV:
  965. //
  966. // break;
  967. // default:
  968. // break;
  969. // }
  970. switch (DL_COMP_getPendingInterrupt(COMP_FLEDCHECK_INST)) {
  971. case DL_COMP_IIDX_OUTPUT_EDGE:
  972. if(BikeLedCheck_F.uwBike_OpenLedEn!=0)
  973. {
  974. DL_TimerG_setCaptureCompareValue(PWM_F_INST, 0, GPIO_PWM_F_C1_IDX);//max=2304
  975. }
  976. else
  977. {
  978. if(BikeLedCheck_F.uwBike_OpenPreTime<=2)
  979. {
  980. BikeLedCheck_F.uwBike_OpenPreTime=2;
  981. // CMPF++;
  982. BikeLedCheck_F.uwBikeLight_PWM=691;//LIGHT_SECTPWM;
  983. DL_TimerG_setCaptureCompareValue(PWM_F_INST, BikeLedCheck_F.uwBikeLight_PWM, GPIO_PWM_F_C1_IDX);//max=2304
  984. }
  985. }
  986. BikeLedCheck_F.blBike_LedCurErr=TRUE;
  987. // CHMPF++;
  988. break;
  989. case DL_COMP_IIDX_OUTPUT_EDGE_INV:
  990. if(BikeLedCheck_F.uwBike_OpenLedEn!=0)
  991. {
  992. DL_TimerG_stopCounter(PWM_F_INST);
  993. BikeLedCheck_F.uwBikeLight_PWM=0;
  994. DL_TimerG_setCaptureCompareValue(PWM_F_INST, 0, GPIO_PWM_F_C1_IDX);//max=2304
  995. }
  996. // CLMPF++;
  997. break;
  998. default:
  999. break;
  1000. }
  1001. uint32_t gpioA = DL_GPIO_getEnabledInterruptStatus(
  1002. GPIOA,DL_GPIO_PIN_8 | DL_GPIO_PIN_3 );
  1003. uint32_t gpioB = DL_GPIO_getEnabledInterruptStatus(
  1004. GPIOB, DL_GPIO_PIN_3 | DL_GPIO_PIN_2| DL_GPIO_PIN_8| DL_GPIO_PIN_15);
  1005. //B_LED
  1006. if ((gpioB & DL_GPIO_PIN_15) == DL_GPIO_PIN_15)
  1007. {
  1008. if(BikeLedCheck_B.uwBike_OpenLedEn!=0)
  1009. {
  1010. // DL_TimerG_stopCounter(PWM_B_L_INST);
  1011. DL_Timer_overrideCCPOut(PWM_B_L_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, GPIO_PWM_B_L_C1_IDX);
  1012. BikeLedCheck_B.uwBikeLight_PWM=0;
  1013. DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, 0, GPIO_PWM_B_L_C1_IDX);//max=2304
  1014. CLMPF++;
  1015. }
  1016. else
  1017. {
  1018. if(BikeLedCheck_B.uwBike_OpenPreTime<=2)
  1019. {
  1020. BikeLedCheck_B.uwBike_OpenPreTime=2;
  1021. CMPF++;
  1022. BikeLedCheck_B.uwBikeLight_PWM=691;//LIGHT_SECTPWM;
  1023. DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, BikeLedCheck_B.uwBikeLight_PWM, GPIO_PWM_B_L_C1_IDX);//max=2304
  1024. }
  1025. }
  1026. BikeLedCheck_B.blBike_LedCurErr=TRUE;
  1027. CHMPF++;
  1028. DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_15);
  1029. }
  1030. //R_LED
  1031. if ((gpioB & DL_GPIO_PIN_8) == DL_GPIO_PIN_8)
  1032. {
  1033. if(BikeLedCheck_R.uwBike_OpenLedEn!=0)
  1034. {
  1035. DL_TimerG_stopCounter(PWM_R_INST);
  1036. BikeLedCheck_R.uwBikeLight_PWM=0;
  1037. DL_TimerG_setCaptureCompareValue(PWM_R_INST, 0, GPIO_PWM_R_C1_IDX);//max=2304
  1038. // CLMPF++;
  1039. }
  1040. else
  1041. {
  1042. if(BikeLedCheck_R.uwBike_OpenPreTime<=2)
  1043. {
  1044. BikeLedCheck_R.uwBike_OpenPreTime=2;
  1045. // CMPF++;
  1046. BikeLedCheck_R.uwBikeLight_PWM=691;//LIGHT_SECTPWM;
  1047. DL_TimerG_setCaptureCompareValue(PWM_R_INST, BikeLedCheck_R.uwBikeLight_PWM, GPIO_PWM_R_C1_IDX);//max=2304
  1048. }
  1049. }
  1050. BikeLedCheck_R.blBike_LedCurErr=TRUE;
  1051. // CHMPF++;
  1052. DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_8);
  1053. }
  1054. //-L-LED
  1055. if ((gpioA & DL_GPIO_PIN_3) == DL_GPIO_PIN_3)
  1056. {
  1057. if(BikeLedCheck_L.uwBike_OpenLedEn!=0)
  1058. {
  1059. // DL_TimerG_stopCounter(PWM_B_L_INST);
  1060. DL_Timer_overrideCCPOut(PWM_B_L_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, GPIO_PWM_B_L_C0_IDX);
  1061. BikeLedCheck_L.uwBikeLight_PWM=0;
  1062. DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, 0, GPIO_PWM_B_L_C0_IDX);//max=2304
  1063. // CLMPF++;
  1064. }
  1065. else
  1066. {
  1067. if(BikeLedCheck_L.uwBike_OpenPreTime<=2)
  1068. {
  1069. BikeLedCheck_L.uwBike_OpenPreTime=2;
  1070. CMPF++;
  1071. BikeLedCheck_L.uwBikeLight_PWM=691;//LIGHT_SECTPWM;
  1072. DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, BikeLedCheck_L.uwBikeLight_PWM, GPIO_PWM_B_L_C0_IDX);//max=2304
  1073. }
  1074. }
  1075. BikeLedCheck_L.blBike_LedCurErr=TRUE;
  1076. // CHMPF++;
  1077. DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_3);
  1078. }
  1079. /* add user code begin TMR3_GLOBAL_IRQ 0 */
  1080. 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))
  1081. {
  1082. HGcnt++;
  1083. switchhall_voTim3Int();
  1084. DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_8);
  1085. DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_3);
  1086. DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_2);
  1087. }
  1088. // if ((gpioA & DL_GPIO_PIN_26) == DL_GPIO_PIN_26)
  1089. // {
  1090. // DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_26);
  1091. // }
  1092. /* add user code end TMR3_GLOBAL_IRQ 0 */
  1093. /* add user code begin TMR3_GLOBAL_IRQ 1 */
  1094. /* add user code end TMR3_GLOBAL_IRQ 1 */
  1095. /*
  1096. * Get the pending interrupt for the GPIOA port and store for
  1097. * comparisons later
  1098. */
  1099. }
  1100. /**
  1101. * @brief this function handles TMR16 handler.
  1102. * @param none
  1103. * @retval none
  1104. */
  1105. //void SPEED_INST_IRQHandler(void) //void TMR16_GLOBAL_IRQHandler(void)
  1106. //{
  1107. //
  1108. // /* add user code begin TMR16_GLOBAL_IRQ 0 */
  1109. ////Bike Speed
  1110. // UWORD uwIntSource = 0;
  1111. //
  1112. //
  1113. // switch (DL_TimerG_getPendingInterrupt(SPEED_INST))
  1114. // {
  1115. // case DL_TIMER_IIDX_CC0_DN:
  1116. // SPEED_edgeCapture = DL_Timer_getCaptureCompareValue(SPEED_INST, DL_TIMER_CC_0_INDEX);
  1117. //
  1118. //// tmr_flag_clear(TMR16,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC4);
  1119. // uwIntSource = 3;
  1120. // // tempIO2 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11);
  1121. //// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_8))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11))
  1122. // {
  1123. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1124. // }
  1125. //// else
  1126. // {
  1127. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1128. // }
  1129. //
  1130. // // bikespeed_voBikeSpeedCal(uwIntSource);
  1131. //
  1132. // break;
  1133. // case DL_TIMER_IIDX_ZERO:
  1134. // uwIntSource = 1;
  1135. // /* TBS interrupt */
  1136. // // tbs_voIsr();
  1137. //
  1138. // /* CadenceCal and BikespeedCal */
  1139. //
  1140. // // bikespeed_voBikeSpeedCal(uwIntSource);
  1141. // DCnt++;
  1142. // break;
  1143. // default:
  1144. // break;
  1145. // }
  1146. //
  1147. //
  1148. //// if(tmr_flag_get(TMR16,TMR_OVF_FLAG))// if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update))
  1149. //// {
  1150. //// tmr_flag_clear(TMR16,TMR_OVF_FLAG);//
  1151. //// uwIntSource = 1;
  1152. //// /* TBS interrupt */
  1153. //// tbs_voIsr();
  1154. ////
  1155. //// /* CadenceCal and BikespeedCal */
  1156. ////
  1157. //// bikespeed_voBikeSpeedCal(uwIntSource);
  1158. ////
  1159. //// }
  1160. //// else if (tmr_flag_get(TMR16,TMR_C1_FLAG))//(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC4))
  1161. //// {
  1162. //// tmr_flag_clear(TMR16,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC4);
  1163. //// uwIntSource = 3;
  1164. //// // tempIO2 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11);
  1165. //// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_8))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11))
  1166. //// {
  1167. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1168. //// }
  1169. //// else
  1170. //// {
  1171. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1172. //// }
  1173. ////
  1174. //// bikespeed_voBikeSpeedCal(uwIntSource);
  1175. //// }
  1176. // /* add user code end TMR16_GLOBAL_IRQ 0 */
  1177. // /* add user code begin TMR16_GLOBAL_IRQ 1 */
  1178. //
  1179. // /* add user code end TMR16_GLOBAL_IRQ 1 */
  1180. //}
  1181. /**
  1182. * @brief this function handles TMR17 handler.
  1183. * @param none
  1184. * @retval none
  1185. */
  1186. //void TAPIN_INST_IRQHandler(void)//void TMR17_GLOBAL_IRQHandler(void)
  1187. //{
  1188. // /* add user code begin TMR17_GLOBAL_IRQ 0 */
  1189. ////韪忛牷
  1190. //UWORD uwIntSource = 0;
  1191. //
  1192. //
  1193. // switch (DL_TimerG_getPendingInterrupt(TAPIN_INST))
  1194. // {
  1195. // case DL_TIMERG_IIDX_CC0_DN:
  1196. // TIPIN_edgeCapture = DL_Timer_getCaptureCompareValue(TAPIN_INST, DL_TIMER_CC_0_INDEX);
  1197. // uwIntSource = 2;
  1198. // // tempIO1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10);
  1199. // // if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_9))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
  1200. // // {
  1201. // // tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1202. // // }
  1203. // // else
  1204. // // {
  1205. // // tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1206. // // }
  1207. // cadence_voCadenceCal(uwIntSource);
  1208. //
  1209. // break;
  1210. // case DL_TIMER_IIDX_ZERO:
  1211. // uwIntSource = 1;
  1212. // /* TBS interrupt */
  1213. // // tbs_voIsr();
  1214. //
  1215. // /* CadenceCal and BikespeedCal */
  1216. // cadence_voCadenceCal(uwIntSource);
  1217. // ECnt++;
  1218. // break;
  1219. // default:
  1220. // break;
  1221. // }
  1222. //
  1223. //// if(tmr_flag_get(TMR17,TMR_OVF_FLAG))// if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update))
  1224. //// {
  1225. //// uwIntSource = 1;
  1226. //// /* TBS interrupt */
  1227. //// // tbs_voIsr();
  1228. ////
  1229. //// /* CadenceCal and BikespeedCal */
  1230. //// cadence_voCadenceCal(uwIntSource);
  1231. ////
  1232. //// tmr_flag_clear(TMR17,TMR_OVF_FLAG);// TIM_ClearFlag(TIM2, TIM_FLAG_Update);
  1233. //// }
  1234. //// else if (tmr_flag_get(TMR17,TMR_C1_FLAG))//(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC3))
  1235. //// {
  1236. //// uwIntSource = 2;
  1237. //// // tempIO1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10);
  1238. ////// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_9))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
  1239. ////// {
  1240. ////// tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1241. ////// }
  1242. ////// else
  1243. ////// {
  1244. ////// tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1245. ////// }
  1246. //// cadence_voCadenceCal(uwIntSource);
  1247. //// tmr_flag_clear(TMR17,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC3);
  1248. //// }
  1249. ////
  1250. //// /* add user code end TMR17_GLOBAL_IRQ 0 */
  1251. //// /* add user code begin TMR17_GLOBAL_IRQ 1 */
  1252. ////
  1253. //// /* add user code end TMR17_GLOBAL_IRQ 1 */
  1254. //}
  1255. /**
  1256. * @brief this function handles USART1 handler.
  1257. * @param none
  1258. * @retval none
  1259. */
  1260. void UART0_IRQHandler(void)
  1261. {
  1262. // USARTx_Rx_IRQ(&UART_RxBuff_Struct_OBC);
  1263. // USARTx_Tx_IRQ(&UART_TxBuff_Struct_OBC);
  1264. USARTx_RxTX_IRQ(&UART_RxBuff_Struct_OBC,&UART_TxBuff_Struct_OBC,&stUSART_FrameBuf_OBC);
  1265. }
  1266. //
  1267. ///**
  1268. // * @brief this function handles USART2 handler.
  1269. // * @param none
  1270. // * @retval none
  1271. // */
  1272. //void UART_BAT_INST_IRQHandler(void)
  1273. //{
  1274. // USARTx_Rx_IRQ(&UART_RxBuff_Struct_BMS);
  1275. // USARTx_Tx_IRQ(&UART_TxBuff_Struct_BMS);
  1276. //}
  1277. //
  1278. ULONG id = 0;
  1279. void MCAN0_INST_IRQHandler(void)
  1280. {
  1281. volatile ULONG gInterruptLine1Status = 0;
  1282. DL_MCAN_RxFIFOStatus rxFS;
  1283. switch (DL_MCAN_getPendingInterrupt(MCAN0_INST)) {
  1284. case DL_MCAN_IIDX_LINE1:
  1285. /* Check MCAN interrupts fired during TX/RX of CAN package */
  1286. gInterruptLine1Status |= DL_MCAN_getIntrStatus(MCAN0_INST);
  1287. DL_MCAN_clearIntrStatus(MCAN0_INST, gInterruptLine1Status,DL_MCAN_INTR_SRC_MCAN_LINE_1);
  1288. if ((gInterruptLine1Status & MCAN_IR_RF0N_MASK) == MCAN_IR_RF0N_MASK)
  1289. {
  1290. rxFS.fillLvl = 0;
  1291. rxFS.num = DL_MCAN_RX_FIFO_NUM_0;
  1292. while ((rxFS.fillLvl) == 0)
  1293. {
  1294. DL_MCAN_getRxFIFOStatus(MCAN0_INST, &rxFS);
  1295. }
  1296. DL_MCAN_readMsgRam(MCAN0_INST, DL_MCAN_MEM_TYPE_FIFO, 0U, rxFS.num, pRxMsg);
  1297. DL_MCAN_writeRxFIFOAck(MCAN0_INST, rxFS.num, rxFS.getIdx);
  1298. if(pRxMsg->xtd == 0)
  1299. {
  1300. id = ((pRxMsg->id) & 0x1FFC0000)>>18;
  1301. }
  1302. else
  1303. {
  1304. id = pRxMsg->id & 0x1FFFFFFF;
  1305. }
  1306. if(pRxMsg->xtd == ID_MODE_STANDARD)
  1307. {
  1308. //11-bit standard identifier
  1309. switch (id)
  1310. {
  1311. case ID_PBU_BC:
  1312. case ID_PBU_TO_MC: //接收PBU数据
  1313. {
  1314. CAN_RxBuf_Struct_PBU.ulBufID = id;
  1315. CAN_Rx_ISR(&CAN_RxBuf_Struct_PBU, pRxMsg->dlc);
  1316. break;
  1317. }
  1318. case ID_BMS_BC:
  1319. case ID_BMS_TO_MC: //接收BMS数据
  1320. {
  1321. CAN_RxBuf_Struct_BMS.ulBufID = id;
  1322. CAN_Rx_ISR(&CAN_RxBuf_Struct_BMS, pRxMsg->dlc);
  1323. break;
  1324. }
  1325. case ID_HMI_BC:
  1326. case ID_HMI_TO_MC: //接收HMI数据
  1327. {
  1328. CAN_RxBuf_Struct_HMI.ulBufID = id;
  1329. CAN_Rx_ISR(&CAN_RxBuf_Struct_HMI, pRxMsg->dlc);
  1330. break;
  1331. }
  1332. case ID_CDL_BC:
  1333. case ID_CDL_TO_MC: // case ID_CDL_TO_MC_TE://接收CDL数据
  1334. {
  1335. CAN_RxBuf_Struct_CDL.ulBufID = id;
  1336. CAN_Rx_ISR(&CAN_RxBuf_Struct_CDL, pRxMsg->dlc);
  1337. break;
  1338. }
  1339. default:
  1340. break;
  1341. }
  1342. }
  1343. else
  1344. {
  1345. //29-bit extended identifier
  1346. }
  1347. gInterruptLine1Status &= ~(MCAN_IR_RF0N_MASK);
  1348. }
  1349. break;
  1350. default:
  1351. break;
  1352. }
  1353. }
  1354. ///**
  1355. // * @brief this function handles EXINT Line 1 & 0 handler.
  1356. // * @param none
  1357. // * @retval none
  1358. // */
  1359. //void EXINT1_0_IRQHandler(void)
  1360. //{
  1361. // UWORD lightCnt=0;
  1362. // UWORD lightCntTime=0;
  1363. // UWORD lightTime=0;
  1364. // UWORD BacklightTime=0;
  1365. //
  1366. // /* add user code begin EXINT1_0_IRQ 0 */
  1367. // if(exint_interrupt_flag_get(EXINT_LINE_0) != RESET)
  1368. // {
  1369. //
  1370. // for(lightCnt=0;lightCnt<=12;lightCnt++)
  1371. // {
  1372. // if(IO_FORWARDLEDCHECK_PORT()==0)
  1373. // lightCntTime++;
  1374. // }
  1375. //
  1376. // if(lightCntTime>=(11))
  1377. // {
  1378. // IO_FORWARDLED_OFF();
  1379. // BikeLedGloFun.blBike_ForwardLedDetErr=TRUE;
  1380. // lightCntTime=0;
  1381. // }
  1382. // exint_flag_clear(EXINT_LINE_0);
  1383. // }
  1384. // /* add user code end EXINT1_0_IRQ 0 */
  1385. // /* add user code begin EXINT1_0_IRQ 1 */
  1386. // if(exint_interrupt_flag_get(EXINT_LINE_1) != RESET)
  1387. // {
  1388. // for(lightTime=0;lightTime<=12;lightTime++)//40
  1389. // {
  1390. // if(IO_BACKLEDCHECK_PORT()==0)
  1391. // BacklightTime++;
  1392. // }
  1393. // if(BacklightTime>=(11))
  1394. // {
  1395. // IO_BACKLED_OFF();
  1396. // BikeLedGloFun.blBike_BackLedDetErr=TRUE ;
  1397. // BacklightTime=0;
  1398. // }
  1399. //
  1400. // exint_flag_clear(EXINT_LINE_1);
  1401. // }
  1402. // /* add user code end EXINT1_0_IRQ 1 */
  1403. //}
  1404. void TIMA1_IRQHandler(void) //void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void)
  1405. {
  1406. // ECnt++;
  1407. /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 0 */
  1408. //if(0)//if(tmr_flag_get(TMR1,TMR_BRK_FLAG))//if (TIM_GetFlagStatus(TIM1, TIM_FLAG_Break))
  1409. // {
  1410. //// tmr_flag_clear(TMR1,TMR_BRK_FLAG);//TIM_ClearFlag(TIM1, TIM_FLAG_Break);
  1411. //
  1412. // }
  1413. switch (DL_TimerA_getPendingInterrupt(TIMA1))
  1414. {
  1415. case DL_TIMER_IIDX_ZERO:
  1416. ECnt++;
  1417. if(( Samp_Step==0) ||( Samp_Step>=4))
  1418. Samp_Step=1;
  1419. else
  1420. Samp_Step++;
  1421. switch (Samp_Step)
  1422. {
  1423. case 1:
  1424. // adc_enable(ADC1,TRUE);
  1425. // GPIOB->odt ^= GPIO_PINS_11;
  1426. /* Set Rdson sample trigger */
  1427. //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦
  1428. /* ADC1 regular channel trigger */
  1429. // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  1430. tbc_voUpIsr();
  1431. // DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN);
  1432. break;
  1433. case 3:
  1434. /* ADC Rdson calibration with single resistance*/
  1435. if (TimingDelay != 0)
  1436. {
  1437. TimingDelay--;
  1438. }
  1439. if(bikespeed_stFreGetOut.uwCaputureOverflowCnt<60000)
  1440. bikespeed_stFreGetOut.uwCaputureOverflowCnt++; //
  1441. if(cadence_stFreGetOut.uwCaputureOverflowCnt<60000)
  1442. cadence_stFreGetOut.uwCaputureOverflowCnt++;
  1443. tbs_voIsr();//20241017
  1444. // if(BikeLedGloFun.blBike_ForwardLedSta==TRUE)
  1445. // {
  1446. // BikeLedGloFun.uwBikeLight_L_PWM +=100;
  1447. // if(BikeLedGloFun.uwBikeLight_L_PWM>720)
  1448. // {
  1449. // BikeLedGloFun.uwBikeLight_L_PWM=720;
  1450. // }
  1451. //
  1452. // BikeLedGloFun.uwBikeLight_F_PWM +=100;
  1453. // if(BikeLedGloFun.uwBikeLight_F_PWM>1800)
  1454. // {
  1455. // BikeLedGloFun.uwBikeLight_F_PWM=1800;
  1456. // }
  1457. // DL_TimerG_setCaptureCompareValue(PWM_2_INST, BikeLedGloFun.uwBikeLight_L_PWM, GPIO_PWM_2_C1_IDX);
  1458. // DL_TimerG_setCaptureCompareValue(PWM_3_INST, BikeLedGloFun.uwBikeLight_F_PWM, GPIO_PWM_3_C1_IDX);//max=1800
  1459. // }
  1460. break;
  1461. default:
  1462. break;
  1463. }
  1464. // gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15;
  1465. // /* ADC1 regular channel trigger */
  1466. // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  1467. // tbc_voUpIsr();
  1468. // tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update);
  1469. // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE))
  1470. // {
  1471. // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE)
  1472. // {
  1473. // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ;
  1474. // IO_FORWARDLED_ON(); //寮�鍓嶇伅
  1475. // BikeLedGloFun.blBike_ForwardLedSta=TRUE;
  1476. // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++;
  1477. // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64)
  1478. // {
  1479. // BikeLedGloFun.blBike_ForwardLedStart=FALSE;
  1480. // }
  1481. // }
  1482. // }
  1483. if(( BikeLedGloFun.blBike_BackLedSta==TRUE) &&(BikeLedGloFun.blBike_BackLedStart==TRUE))
  1484. {
  1485. if( BikeLedGloFun.blBike_BackLedDetErr==TRUE)
  1486. {
  1487. BikeLedGloFun.blBike_BackLedDetErr=FALSE;
  1488. IO_BACKLED_ON();
  1489. BikeLedGloFun.uwBike_BackLedDetErrTime++;
  1490. if( BikeLedGloFun.uwBike_BackLedDetErrTime>=64)
  1491. {
  1492. BikeLedGloFun.blBike_BackLedStart=FALSE;
  1493. }
  1494. }
  1495. }
  1496. break;
  1497. case DL_TIMER_IIDX_LOAD:
  1498. GCnt++;
  1499. // DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN);
  1500. Samp_Step++;
  1501. // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);//
  1502. switch (Samp_Step)
  1503. {
  1504. case 2:
  1505. // gpio_bits_set(GPIOB,GPIO_PINS_11);
  1506. // adc_enable(ADC1,FALSE);//
  1507. tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1;
  1508. // gpio_bits_reset(GPIOB,GPIO_PINS_11);
  1509. #if(JSCOPE_EN!=0)
  1510. Jscope_WtiteData();
  1511. #endif
  1512. break;
  1513. case 4:
  1514. // GPIOC->odt ^= GPIO_PINS_13;
  1515. hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  1516. hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  1517. hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  1518. hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  1519. hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  1520. hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  1521. /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  1522. // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  1523. // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  1524. // pwm_stGenOut.uwNewTIM1COMPR[0]=900 ;
  1525. // pwm_stGenOut.uwNewTIM1COMPR[1]=1250;
  1526. // pwm_stGenOut.uwNewTIM1COMPR[2]=450 ;
  1527. TIMER_CC_A_INDEX(pwm_stGenOut.uwNewTIM1COMPR[0]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_0_INDEX);//A
  1528. TIMER_CC_B_INDEX(pwm_stGenOut.uwNewTIM1COMPR[1]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_2_INDEX); //B
  1529. TIMER_CC_C_INDEX(pwm_stGenOut.uwNewTIM1COMPR[2]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_1_INDEX);//C
  1530. // adc_enable(ADC1,TRUE);//
  1531. DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST,2, DL_TIMER_CC_4_INDEX); //采样点设置
  1532. break;
  1533. default:
  1534. break;
  1535. }
  1536. break;
  1537. default:
  1538. break;
  1539. }
  1540. // DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_31);
  1541. }
  1542. /* add user code begin 1 */
  1543. /* add user code end 1 */