m0g3507_int.c 63 KB

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