m0g3507_int.c 63 KB

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