m0g3507_int.c 58 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550
  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 0
  957. if ((gpioA & DL_GPIO_PIN_26) == DL_GPIO_PIN_26)
  958. {
  959. if(BikeLedCheck_F.uwBike_OpenLedEn!=0)
  960. {
  961. BikeLedCheck_F.uwBikeLight_PWM=0;
  962. CLMPF++;
  963. }
  964. else
  965. {
  966. if( BikeLedCheck_F.blBike_LedSta==TRUE)
  967. {
  968. if(BikeLedCheck_F.uwBike_OpenPreTime<=2)
  969. {
  970. BikeLedCheck_F.uwBike_OpenPreTime=2;
  971. CMPF++;
  972. BikeLedCheck_F.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM;
  973. }
  974. }
  975. }
  976. if( BikeLedCheck_F.blBike_LedSta==TRUE)
  977. BikeLedCheck_F.blBike_LedCurErr=TRUE;
  978. CHMPF++;
  979. DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_26);
  980. }
  981. #endif
  982. /* add user code begin TMR3_GLOBAL_IRQ 0 */
  983. if( ((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))
  984. {
  985. HGcnt++;
  986. switchhall_voTim3Int();
  987. DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_8);
  988. DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_3);
  989. DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_2);
  990. }
  991. /* add user code end TMR3_GLOBAL_IRQ 0 */
  992. /* add user code begin TMR3_GLOBAL_IRQ 1 */
  993. /* add user code end TMR3_GLOBAL_IRQ 1 */
  994. /*
  995. * Get the pending interrupt for the GPIOA port and store for
  996. * comparisons later
  997. */
  998. }
  999. /**
  1000. * @brief this function handles TMR16 handler.
  1001. * @param none
  1002. * @retval none
  1003. */
  1004. //void SPEED_INST_IRQHandler(void) //void TMR16_GLOBAL_IRQHandler(void)
  1005. //{
  1006. //
  1007. // /* add user code begin TMR16_GLOBAL_IRQ 0 */
  1008. ////Bike Speed
  1009. // UWORD uwIntSource = 0;
  1010. //
  1011. //
  1012. // switch (DL_TimerG_getPendingInterrupt(SPEED_INST))
  1013. // {
  1014. // case DL_TIMER_IIDX_CC0_DN:
  1015. // SPEED_edgeCapture = DL_Timer_getCaptureCompareValue(SPEED_INST, DL_TIMER_CC_0_INDEX);
  1016. //
  1017. //// tmr_flag_clear(TMR16,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC4);
  1018. // uwIntSource = 3;
  1019. // // tempIO2 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11);
  1020. //// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_8))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11))
  1021. // {
  1022. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1023. // }
  1024. //// else
  1025. // {
  1026. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1027. // }
  1028. //
  1029. // // bikespeed_voBikeSpeedCal(uwIntSource);
  1030. //
  1031. // break;
  1032. // case DL_TIMER_IIDX_ZERO:
  1033. // uwIntSource = 1;
  1034. // /* TBS interrupt */
  1035. // // tbs_voIsr();
  1036. //
  1037. // /* CadenceCal and BikespeedCal */
  1038. //
  1039. // // bikespeed_voBikeSpeedCal(uwIntSource);
  1040. // DCnt++;
  1041. // break;
  1042. // default:
  1043. // break;
  1044. // }
  1045. //
  1046. //
  1047. //// if(tmr_flag_get(TMR16,TMR_OVF_FLAG))// if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update))
  1048. //// {
  1049. //// tmr_flag_clear(TMR16,TMR_OVF_FLAG);//
  1050. //// uwIntSource = 1;
  1051. //// /* TBS interrupt */
  1052. //// tbs_voIsr();
  1053. ////
  1054. //// /* CadenceCal and BikespeedCal */
  1055. ////
  1056. //// bikespeed_voBikeSpeedCal(uwIntSource);
  1057. ////
  1058. //// }
  1059. //// else if (tmr_flag_get(TMR16,TMR_C1_FLAG))//(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC4))
  1060. //// {
  1061. //// tmr_flag_clear(TMR16,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC4);
  1062. //// uwIntSource = 3;
  1063. //// // tempIO2 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11);
  1064. //// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_8))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11))
  1065. //// {
  1066. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1067. //// }
  1068. //// else
  1069. //// {
  1070. //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1071. //// }
  1072. ////
  1073. //// bikespeed_voBikeSpeedCal(uwIntSource);
  1074. //// }
  1075. // /* add user code end TMR16_GLOBAL_IRQ 0 */
  1076. // /* add user code begin TMR16_GLOBAL_IRQ 1 */
  1077. //
  1078. // /* add user code end TMR16_GLOBAL_IRQ 1 */
  1079. //}
  1080. /**
  1081. * @brief this function handles TMR17 handler.
  1082. * @param none
  1083. * @retval none
  1084. */
  1085. //void TAPIN_INST_IRQHandler(void)//void TMR17_GLOBAL_IRQHandler(void)
  1086. //{
  1087. // /* add user code begin TMR17_GLOBAL_IRQ 0 */
  1088. ////韪忛牷
  1089. //UWORD uwIntSource = 0;
  1090. //
  1091. //
  1092. // switch (DL_TimerG_getPendingInterrupt(TAPIN_INST))
  1093. // {
  1094. // case DL_TIMERG_IIDX_CC0_DN:
  1095. // TIPIN_edgeCapture = DL_Timer_getCaptureCompareValue(TAPIN_INST, DL_TIMER_CC_0_INDEX);
  1096. // uwIntSource = 2;
  1097. // // tempIO1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10);
  1098. // // if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_9))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
  1099. // // {
  1100. // // tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1101. // // }
  1102. // // else
  1103. // // {
  1104. // // tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1105. // // }
  1106. // cadence_voCadenceCal(uwIntSource);
  1107. //
  1108. // break;
  1109. // case DL_TIMER_IIDX_ZERO:
  1110. // uwIntSource = 1;
  1111. // /* TBS interrupt */
  1112. // // tbs_voIsr();
  1113. //
  1114. // /* CadenceCal and BikespeedCal */
  1115. // cadence_voCadenceCal(uwIntSource);
  1116. // ECnt++;
  1117. // break;
  1118. // default:
  1119. // break;
  1120. // }
  1121. //
  1122. //// if(tmr_flag_get(TMR17,TMR_OVF_FLAG))// if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update))
  1123. //// {
  1124. //// uwIntSource = 1;
  1125. //// /* TBS interrupt */
  1126. //// // tbs_voIsr();
  1127. ////
  1128. //// /* CadenceCal and BikespeedCal */
  1129. //// cadence_voCadenceCal(uwIntSource);
  1130. ////
  1131. //// tmr_flag_clear(TMR17,TMR_OVF_FLAG);// TIM_ClearFlag(TIM2, TIM_FLAG_Update);
  1132. //// }
  1133. //// else if (tmr_flag_get(TMR17,TMR_C1_FLAG))//(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC3))
  1134. //// {
  1135. //// uwIntSource = 2;
  1136. //// // tempIO1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10);
  1137. ////// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_9))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
  1138. ////// {
  1139. ////// tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling);
  1140. ////// }
  1141. ////// else
  1142. ////// {
  1143. ////// tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising);
  1144. ////// }
  1145. //// cadence_voCadenceCal(uwIntSource);
  1146. //// tmr_flag_clear(TMR17,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC3);
  1147. //// }
  1148. ////
  1149. //// /* add user code end TMR17_GLOBAL_IRQ 0 */
  1150. //// /* add user code begin TMR17_GLOBAL_IRQ 1 */
  1151. ////
  1152. //// /* add user code end TMR17_GLOBAL_IRQ 1 */
  1153. //}
  1154. /**
  1155. * @brief this function handles USART1 handler.
  1156. * @param none
  1157. * @retval none
  1158. */
  1159. void UART0_IRQHandler(void)
  1160. {
  1161. // USARTx_Rx_IRQ(&UART_RxBuff_Struct_OBC);
  1162. // USARTx_Tx_IRQ(&UART_TxBuff_Struct_OBC);
  1163. USARTx_RxTX_IRQ(&UART_RxBuff_Struct_OBC,&UART_TxBuff_Struct_OBC,&stUSART_FrameBuf_OBC);
  1164. }
  1165. //
  1166. ///**
  1167. // * @brief this function handles USART2 handler.
  1168. // * @param none
  1169. // * @retval none
  1170. // */
  1171. //void UART_BAT_INST_IRQHandler(void)
  1172. //{
  1173. // USARTx_Rx_IRQ(&UART_RxBuff_Struct_BMS);
  1174. // USARTx_Tx_IRQ(&UART_TxBuff_Struct_BMS);
  1175. //}
  1176. //
  1177. ULONG id = 0;
  1178. void MCAN0_INST_IRQHandler(void)
  1179. {
  1180. volatile ULONG gInterruptLine1Status = 0;
  1181. DL_MCAN_RxFIFOStatus rxFS;
  1182. switch (DL_MCAN_getPendingInterrupt(MCAN0_INST)) {
  1183. case DL_MCAN_IIDX_LINE1:
  1184. /* Check MCAN interrupts fired during TX/RX of CAN package */
  1185. gInterruptLine1Status |= DL_MCAN_getIntrStatus(MCAN0_INST);
  1186. DL_MCAN_clearIntrStatus(MCAN0_INST, gInterruptLine1Status,DL_MCAN_INTR_SRC_MCAN_LINE_1);
  1187. if ((gInterruptLine1Status & MCAN_IR_RF0N_MASK) == MCAN_IR_RF0N_MASK)
  1188. {
  1189. rxFS.fillLvl = 0;
  1190. rxFS.num = DL_MCAN_RX_FIFO_NUM_0;
  1191. while ((rxFS.fillLvl) == 0)
  1192. {
  1193. DL_MCAN_getRxFIFOStatus(MCAN0_INST, &rxFS);
  1194. }
  1195. DL_MCAN_readMsgRam(MCAN0_INST, DL_MCAN_MEM_TYPE_FIFO, 0U, rxFS.num, pRxMsg);
  1196. DL_MCAN_writeRxFIFOAck(MCAN0_INST, rxFS.num, rxFS.getIdx);
  1197. if(pRxMsg->xtd == 0)
  1198. {
  1199. id = ((pRxMsg->id) & 0x1FFC0000)>>18;
  1200. }
  1201. else
  1202. {
  1203. id = pRxMsg->id & 0x1FFFFFFF;
  1204. }
  1205. if(pRxMsg->xtd == ID_MODE_STANDARD)
  1206. {
  1207. //11-bit standard identifier
  1208. switch (id)
  1209. {
  1210. case ID_PBU_BC:
  1211. case ID_PBU_TO_MC: //接收PBU数据
  1212. {
  1213. CAN_RxBuf_Struct_PBU.ulBufID = id;
  1214. CAN_Rx_ISR(&CAN_RxBuf_Struct_PBU, pRxMsg->dlc);
  1215. break;
  1216. }
  1217. case ID_BMS_BC:
  1218. case ID_BMS_TO_MC: //接收BMS数据
  1219. {
  1220. CAN_RxBuf_Struct_BMS.ulBufID = id;
  1221. CAN_Rx_ISR(&CAN_RxBuf_Struct_BMS, pRxMsg->dlc);
  1222. break;
  1223. }
  1224. case ID_HMI_BC:
  1225. case ID_HMI_TO_MC: //接收HMI数据
  1226. {
  1227. CAN_RxBuf_Struct_HMI.ulBufID = id;
  1228. CAN_Rx_ISR(&CAN_RxBuf_Struct_HMI, pRxMsg->dlc);
  1229. break;
  1230. }
  1231. case ID_CDL_BC:
  1232. case ID_CDL_TO_MC: // case ID_CDL_TO_MC_TE://接收CDL数据
  1233. {
  1234. CAN_RxBuf_Struct_CDL.ulBufID = id;
  1235. CAN_Rx_ISR(&CAN_RxBuf_Struct_CDL, pRxMsg->dlc);
  1236. break;
  1237. }
  1238. default:
  1239. break;
  1240. }
  1241. }
  1242. else
  1243. {
  1244. //29-bit extended identifier
  1245. }
  1246. gInterruptLine1Status &= ~(MCAN_IR_RF0N_MASK);
  1247. }
  1248. break;
  1249. default:
  1250. break;
  1251. }
  1252. }
  1253. ///**
  1254. // * @brief this function handles EXINT Line 1 & 0 handler.
  1255. // * @param none
  1256. // * @retval none
  1257. // */
  1258. //void EXINT1_0_IRQHandler(void)
  1259. //{
  1260. // UWORD lightCnt=0;
  1261. // UWORD lightCntTime=0;
  1262. // UWORD lightTime=0;
  1263. // UWORD BacklightTime=0;
  1264. //
  1265. // /* add user code begin EXINT1_0_IRQ 0 */
  1266. // if(exint_interrupt_flag_get(EXINT_LINE_0) != RESET)
  1267. // {
  1268. //
  1269. // for(lightCnt=0;lightCnt<=12;lightCnt++)
  1270. // {
  1271. // if(IO_FORWARDLEDCHECK_PORT()==0)
  1272. // lightCntTime++;
  1273. // }
  1274. //
  1275. // if(lightCntTime>=(11))
  1276. // {
  1277. // IO_FORWARDLED_OFF();
  1278. // BikeLedGloFun.blBike_ForwardLedDetErr=TRUE;
  1279. // lightCntTime=0;
  1280. // }
  1281. // exint_flag_clear(EXINT_LINE_0);
  1282. // }
  1283. // /* add user code end EXINT1_0_IRQ 0 */
  1284. // /* add user code begin EXINT1_0_IRQ 1 */
  1285. // if(exint_interrupt_flag_get(EXINT_LINE_1) != RESET)
  1286. // {
  1287. // for(lightTime=0;lightTime<=12;lightTime++)//40
  1288. // {
  1289. // if(IO_BACKLEDCHECK_PORT()==0)
  1290. // BacklightTime++;
  1291. // }
  1292. // if(BacklightTime>=(11))
  1293. // {
  1294. // IO_BACKLED_OFF();
  1295. // BikeLedGloFun.blBike_BackLedDetErr=TRUE ;
  1296. // BacklightTime=0;
  1297. // }
  1298. //
  1299. // exint_flag_clear(EXINT_LINE_1);
  1300. // }
  1301. // /* add user code end EXINT1_0_IRQ 1 */
  1302. //}
  1303. void TIMA1_IRQHandler(void) //void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void)
  1304. {
  1305. // ECnt++;
  1306. /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 0 */
  1307. //if(0)//if(tmr_flag_get(TMR1,TMR_BRK_FLAG))//if (TIM_GetFlagStatus(TIM1, TIM_FLAG_Break))
  1308. // {
  1309. //// tmr_flag_clear(TMR1,TMR_BRK_FLAG);//TIM_ClearFlag(TIM1, TIM_FLAG_Break);
  1310. //
  1311. // }
  1312. switch (DL_TimerA_getPendingInterrupt(TIMA1))
  1313. {
  1314. case DL_TIMER_IIDX_ZERO:
  1315. if(( Samp_Step==0) ||( Samp_Step>=4))
  1316. Samp_Step=1;
  1317. else
  1318. Samp_Step++;
  1319. switch (Samp_Step)
  1320. {
  1321. case 1:
  1322. // adc_enable(ADC1,TRUE);
  1323. // GPIOB->odt ^= GPIO_PINS_11;
  1324. /* Set Rdson sample trigger */
  1325. //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦
  1326. /* ADC1 regular channel trigger */
  1327. // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  1328. // ECnt++;
  1329. tbc_voUpIsr();
  1330. // DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN);
  1331. break;
  1332. case 3:
  1333. /* ADC Rdson calibration with single resistance*/
  1334. if (TimingDelay != 0)
  1335. {
  1336. TimingDelay--;
  1337. }
  1338. if(bikespeed_stFreGetOut.uwCaputureOverflowCnt<60000)
  1339. bikespeed_stFreGetOut.uwCaputureOverflowCnt++; //
  1340. if(cadence_stFreGetOut.uwCaputureOverflowCnt<60000)
  1341. cadence_stFreGetOut.uwCaputureOverflowCnt++;
  1342. tbs_voIsr();//20241017
  1343. ECnt++;
  1344. // if(BikeLedGloFun.blBike_ForwardLedSta==TRUE)
  1345. // {
  1346. // BikeLedGloFun.uwBikeLight_L_PWM +=100;
  1347. // if(BikeLedGloFun.uwBikeLight_L_PWM>720)
  1348. // {
  1349. // BikeLedGloFun.uwBikeLight_L_PWM=720;
  1350. // }
  1351. //
  1352. // BikeLedGloFun.uwBikeLight_F_PWM +=100;
  1353. // if(BikeLedGloFun.uwBikeLight_F_PWM>1800)
  1354. // {
  1355. // BikeLedGloFun.uwBikeLight_F_PWM=1800;
  1356. // }
  1357. // DL_TimerG_setCaptureCompareValue(PWM_2_INST, BikeLedGloFun.uwBikeLight_L_PWM, GPIO_PWM_2_C1_IDX);
  1358. // DL_TimerG_setCaptureCompareValue(PWM_3_INST, BikeLedGloFun.uwBikeLight_F_PWM, GPIO_PWM_3_C1_IDX);//max=1800
  1359. // }
  1360. break;
  1361. default:
  1362. break;
  1363. }
  1364. // gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15;
  1365. // /* ADC1 regular channel trigger */
  1366. // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  1367. // tbc_voUpIsr();
  1368. // tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update);
  1369. // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE))
  1370. // {
  1371. // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE)
  1372. // {
  1373. // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ;
  1374. // IO_FORWARDLED_ON(); //寮�鍓嶇伅
  1375. // BikeLedGloFun.blBike_ForwardLedSta=TRUE;
  1376. // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++;
  1377. // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64)
  1378. // {
  1379. // BikeLedGloFun.blBike_ForwardLedStart=FALSE;
  1380. // }
  1381. // }
  1382. // }
  1383. break;
  1384. case DL_TIMER_IIDX_LOAD:
  1385. // GCnt++;
  1386. // DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN);
  1387. Samp_Step++;
  1388. // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);//
  1389. switch (Samp_Step)
  1390. {
  1391. case 2:
  1392. // gpio_bits_set(GPIOB,GPIO_PINS_11);
  1393. // adc_enable(ADC1,FALSE);//
  1394. tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1;
  1395. GCnt++;
  1396. // gpio_bits_reset(GPIOB,GPIO_PINS_11);
  1397. #if(JSCOPE_EN!=0)
  1398. Jscope_WtiteData();
  1399. #endif
  1400. break;
  1401. case 4:
  1402. // GPIOC->odt ^= GPIO_PINS_13;
  1403. hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0];
  1404. hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1];
  1405. hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2];
  1406. hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3];
  1407. hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4];
  1408. hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5];
  1409. /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */
  1410. // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);
  1411. // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE);
  1412. // pwm_stGenOut.uwNewTIM1COMPR[0]=900 ;
  1413. // pwm_stGenOut.uwNewTIM1COMPR[1]=1250;
  1414. // pwm_stGenOut.uwNewTIM1COMPR[2]=450 ;
  1415. TIMER_CC_A_INDEX(pwm_stGenOut.uwNewTIM1COMPR[0]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_0_INDEX);//A
  1416. TIMER_CC_B_INDEX(pwm_stGenOut.uwNewTIM1COMPR[1]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_2_INDEX); //B
  1417. TIMER_CC_C_INDEX(pwm_stGenOut.uwNewTIM1COMPR[2]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_1_INDEX);//C
  1418. // adc_enable(ADC1,TRUE);//
  1419. DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST,2, DL_TIMER_CC_4_INDEX); //采样点设置
  1420. break;
  1421. default:
  1422. break;
  1423. }
  1424. break;
  1425. default:
  1426. break;
  1427. }
  1428. // DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_31);
  1429. }
  1430. /* add user code begin 1 */
  1431. /* add user code end 1 */