/* add user code begin Header */ /** ************************************************************************** * @file .c * @brief main interrupt service routines. ************************************************************************** * Copyright notice & Disclaimer * * The software Board Support Package (BSP) that is made available to * download from Artery official website is the copyrighted work of Artery. * Artery authorizes customers to use, copy, and distribute the BSP * software and its related documentation for the purpose of design and * development in conjunction with Artery microcontrollers. Use of the * software is governed by this copyright notice and the following disclaimer. * * THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES, * GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS, * TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR * STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS, * INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. * ************************************************************************** */ /* add user code end Header */ /* includes ------------------------------------------------------------------*/ //#include "at32f421_int.h" /* private includes ----------------------------------------------------------*/ /* add user code begin private includes */ //#include "at32f421_wk_config.h" #include "TimeTask_Event.h" #include "syspar.h" #include "user.h" //#include "at32f421_adc.h" //#include "at32f421_tmr.h" #include "usart.h" #include "can.h" //#include "SEGGER_RTT.h" #include "bikelight.h" #include "UserGpio_Config.h" #include "ti_msp_dl_config.h" /* add user code end private includes */ /* private typedef -----------------------------------------------------------*/ /* add user code begin private typedef */ /* add user code end private typedef */ /* private define ------------------------------------------------------------*/ /* add user code begin private define */ /* add user code end private define */ /* private macro -------------------------------------------------------------*/ /* add user code begin private macro */ /* add user code end private macro */ /* private variables ---------------------------------------------------------*/ /* add user code begin private variables */ /* add user code end private variables */ /* private function prototypes --------------------------------------------*/ /* add user code begin function prototypes */ /* add user code end function prototypes */ /* private user code ---------------------------------------------------------*/ /* add user code begin 0 */ //__IO uint16_t adc1_ordinary_valuetab[5][7] = {0}; __IO uint16_t adc1_preempt_valuetab[5][3] = {0}; __IO uint16_t chanel_trans_complete_flag = 0; __IO uint16_t adc_trans_complete_flag = 0; __IO uint16_t preempt_conversion_count = 0; unsigned int BCnt; // Variable: speed control period tick unsigned int CCnt; unsigned int DCnt; unsigned int ECnt,FCnt,GCnt,CMPF,CLMPF; unsigned int CHMPF=0; unsigned int HALLACnt,HALLBCnt,HALLCCnt; unsigned int DAC_value; unsigned int SPEED_edgeCapture,TIPIN_edgeCapture; unsigned int HGcnt; //#define DAC12_REF_VOLTAGE_mV (3300) //#define DAC12_OUTPUT_VOLTAGE_mV (1650) volatile bool gCheckADC; unsigned int i = 0; #define RESULT_SIZE (10) uint16_t gAdcResult0[12]; //OPA0 OUTPUT //volatile uint16_t gAdcResult1[RESULT_SIZE]; // PA25 pcb temp //volatile uint16_t gAdcResult2[RESULT_SIZE];// PA24 motor temp //volatile uint16_t gAdcResult3[RESULT_SIZE]; // PB24 zhuanba //volatile uint16_t gAdcResult4[RESULT_SIZE];// PB20 bus current //volatile uint16_t gAdcResult5[RESULT_SIZE]; // PA14 BAT VOLTAGE //volatile uint16_t gAdcResult6[RESULT_SIZE]; //OPA1 OUTPUT //volatile uint16_t gAdcResult7[RESULT_SIZE]; //PB19 A1_6 Liju // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0); // gAdcResult1[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1); // gAdcResult2[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_2); // gAdcResult3[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_3); // // gAdcResult4[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_4); // gAdcResult5[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_5); // // // gAdcResult6[i] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_0); // DL_GPIO_clearPins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN); // gAdcResult7[i] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_1); /* add user code end 0 */ /* external variables ---------------------------------------------------------*/ /* add user code begin external variables */ #if 0 if(adc_interrupt_flag_get(ADC1, ADC_PCCE_FLAG) != RESET) { adc_flag_clear(ADC1, ADC_PCCE_FLAG); if(preempt_conversion_count < 5){ adc1_preempt_valuetab[preempt_conversion_count][0] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_1); adc1_preempt_valuetab[preempt_conversion_count][1] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_2); adc1_preempt_valuetab[preempt_conversion_count][2] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_3); preempt_conversion_count++; } } if(adc_interrupt_flag_get(ADC1, ADC_CCE_FLAG) != RESET) { adc_flag_clear(ADC1, ADC_CCE_FLAG); if(chanel_trans_complete_flag < 7){ adc1_ordinary_valuetab[adc_trans_complete_flag][chanel_trans_complete_flag++] = adc_ordinary_conversion_data_get(ADC1); } } #endif /* add user code end external variables */ ///** // * @brief this function handles nmi exception. // * @param none // * @retval none // */ //void NMI_Handler(void) //{ // /* add user code begin NonMaskableInt_IRQ 0 */ // // /* add user code end NonMaskableInt_IRQ 0 */ // // /* add user code begin NonMaskableInt_IRQ 1 */ // // /* add user code end NonMaskableInt_IRQ 1 */ //} /** * @brief this function handles hard fault exception. * @param none * @retval none */ void HardFault_Handler(void) { /* add user code begin HardFault_IRQ 0 */ hw_voPWMOff(); /* add user code end HardFault_IRQ 0 */ /* go to infinite loop when hard fault exception occurs */ while (1) { /* add user code begin W1_HardFault_IRQ 0 */ /* add user code end W1_HardFault_IRQ 0 */ } } ///** // * @brief this function handles memory manage exception. // * @param none // * @retval none // */ //void MemManage_Handler(void) //{ // /* add user code begin MemoryManagement_IRQ 0 */ // // /* add user code end MemoryManagement_IRQ 0 */ // /* go to infinite loop when memory manage exception occurs */ // while (1) // { // /* add user code begin W1_MemoryManagement_IRQ 0 */ // // /* add user code end W1_MemoryManagement_IRQ 0 */ // } //} // ///** // * @brief this function handles bus fault exception. // * @param none // * @retval none // */ //void BusFault_Handler(void) //{ // /* add user code begin BusFault_IRQ 0 */ // // /* add user code end BusFault_IRQ 0 */ // /* go to infinite loop when bus fault exception occurs */ // while (1) // { // /* add user code begin W1_BusFault_IRQ 0 */ // // /* add user code end W1_BusFault_IRQ 0 */ // } //} // ///** // * @brief this function handles usage fault exception. // * @param none // * @retval none // */ //void UsageFault_Handler(void) //{ // /* add user code begin UsageFault_IRQ 0 */ // // /* add user code end UsageFault_IRQ 0 */ // /* go to infinite loop when usage fault exception occurs */ // while (1) // { // /* add user code begin W1_UsageFault_IRQ 0 */ // // /* add user code end W1_UsageFault_IRQ 0 */ // } //} // ///** // * @brief this function handles svcall exception. // * @param none // * @retval none // */ //void SVC_Handler(void) //{ // /* add user code begin SVCall_IRQ 0 */ // // /* add user code end SVCall_IRQ 0 */ // /* add user code begin SVCall_IRQ 1 */ // // /* add user code end SVCall_IRQ 1 */ //} // ///** // * @brief this function handles debug monitor exception. // * @param none // * @retval none // */ //void DebugMon_Handler(void) //{ // /* add user code begin DebugMonitor_IRQ 0 */ // // /* add user code end DebugMonitor_IRQ 0 */ // /* add user code begin DebugMonitor_IRQ 1 */ // // /* add user code end DebugMonitor_IRQ 1 */ //} // ///** // * @brief this function handles pendsv_handler exception. // * @param none // * @retval none // */ //void PendSV_Handler(void) //{ // /* add user code begin PendSV_IRQ 0 */ // // /* add user code end PendSV_IRQ 0 */ // /* add user code begin PendSV_IRQ 1 */ // // /* add user code end PendSV_IRQ 1 */ //} /** * @brief this function handles systick handler. * @param none * @retval none */ void SysTick_Handler(void) { /* add user code begin SysTick_IRQ 0 */ /* add user code end SysTick_IRQ 0 */ /* add user code begin SysTick_IRQ 1 */ //clas_ubSystickFlg = 1; // for TUV cp_ulSystickCnt++; /* Add your code below */ /* 1ms and Timing Event */ TimingTaskTimerServer(); Event_1ms(); /* TBT interrupt */ tbt_voIsr(); /* UART */ // UART_voApplTimer(); /* LED */ // at32_led_toggle(); // GPIOF->odt ^= GPIO_PINS_7; /* add user code end SysTick_IRQ 1 */ } ///** // * @brief this function handles DMA1 Channel 1 handler. // * @param none // * @retval none // */ //void DMA1_Channel1_IRQHandler(void) //{ // /* add user code begin DMA1_Channel1_IRQ 0 */ // if(dma_interrupt_flag_get(DMA1_FDT1_FLAG) != RESET) // { // // adc_enable(ADC1,FALSE); // dma_flag_clear(DMA1_FDT1_FLAG); // //dma_trans_complete_flag++; // } // /* add user code end DMA1_Channel1_IRQ 0 */ // /* add user code begin DMA1_Channel1_IRQ 1 */ // // /* add user code end DMA1_Channel1_IRQ 1 */ //} /** * @brief this function handles ADC1 & Comparator handler. * @param none * @retval none */ UWORD tmpSCir = 0; //void ADC12_0_INST_IRQHandler(void) //{ // switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)) { // case DL_ADC12_IIDX_MEM5_RESULT_LOADED: // gCheckADC = true; // DL_GPIO_setPins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN); //// DL_GPIO_togglePins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN); // delay_cycles(1000); // gAdcResult0[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0); // gAdcResult1[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1); // gAdcResult2[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_2); // gAdcResult3[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_3); // // gAdcResult4[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_4); // gAdcResult5[i] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_5); // // // gAdcResult6[i] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_0); // DL_GPIO_clearPins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN); // gAdcResult7[i] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_1); // DL_GPIO_clearPins(OUTPUT_CAN_STB_PORT, OUTPUT_CAN_STB_PIN); // i++; // if (i >= RESULT_SIZE) { // // __BKPT(0); // i = 0; // } // else{ // ;/*No action required*/ // } // break; // default: // break; // } //} void ADC12_0_INST_IRQHandler(void)//void ADC1_CMP_IRQHandler(void) { /* add user code begin ADC1_CMP_IRQ 0 */ // if(adc_interrupt_flag_get(ADC1, ADC_CCE_FLAG) != RESET) // { // adc_flag_clear(ADC1, ADC_CCE_FLAG); // } // if(adc_interrupt_flag_get(ADC1, ADC_PCCE_FLAG) != RESET) // { // adc_flag_clear(ADC1, ADC_PCCE_FLAG); // //if(preempt_conversion_count < 5) // // { // adc1_preempt_valuetab[0][0] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_1); // adc1_preempt_valuetab[0][1] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_2); // adc1_preempt_valuetab[0][2] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_3); // // preempt_conversion_count++; // //} // } BCnt++; // DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN); // DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN); #if(SampleModelSelect == DOUBLERESISTANCE) if (DL_ADC12_getPendingInterrupt(ADC12_0_INST) &DL_ADC12_IIDX_MEM4_RESULT_LOADED)// if (adc_flag_get(ADC1,ADC_PCCE_FLAG)) //ADCx->SR & 0x04 娉ㄥ叆缁勪腑鏂爣蹇� { // // gAdcResult0[0] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0); // gAdcResult0[1] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1); // gAdcResult0[2] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_2); // gAdcResult0[3] = // DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_3); // //// gAdcResult0[4] = //// DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_4); // gAdcResult0[5] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_0); // // // gAdcResult0[6] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_1); // // gAdcResult0[7] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_2); // gAdcResult0[8] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_3); // gAdcResult0[9] = // DL_ADC12_getMemResult(ADC12_1_INST, DL_ADC12_MEM_IDX_4); // GPIOC->odt ^= GPIO_PINS_13; // GPIOC->odt ^= GPIO_PINS_15; // IO_PC10_TEST_ENABLE; //PC10鎵撳嵃鎸囩ず // if( (((uint8_t)DL_Timer_getTimerCount(MOTOR_PWM_INST)) & 0x10) ==0)// if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// //TIME1 鍚戜笂璁℃暟璇诲彇鐩哥數娴丄D鍊� { // GPIOC->odt ^= GPIO_PINS_13; // if(hw_blPWMOnFlg == TRUE) { #if((IPM_POWER_SEL == IPM_POWER_250W_6G) ||(IPM_POWER_SEL ==IPM_POWER_350W_6G)) adc_uwRdsonUReg =RDSON_U_REG();// DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);// adc_uwRdsonVReg =RDSON_V_REG();// #else // adc_uwRdsonUReg =RDSON_U_REG();// DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);// adc_uwRdsonVReg = RDSON_V_REG();// adc_uwRdsonWReg = RDSON_W_REG();// #endif } // else // { // adc_uwRdsonUReg =adc_stCof.uwIaOffset;// // adc_uwRdsonVReg =adc_stCof.uwIbOffset;// // adc_uwRdsonWReg = adc_stCof.uwIcOffset;// // } } // adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇� // IO_PC10_TEST_DISABLE; //PC10鎵撳嵃鎸囩ず } #elif(SampleModelSelect == COMBINATION) if (adc_flag_get(ADC1,ADC_PCCE_FLAG)) //ADCx->SR & 0x04 娉ㄥ叆缁勪腑鏂爣蹇� { if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// //TIME1 鍚戜笂璁℃暟璇诲彇鐩哥數娴丄D鍊� { // GPIOC->odt ^= GPIO_PINS_13;// gpio_bits_reset(GPIOC,GPIO_PINS_13); adc_uwRdsonUReg = ADC1->pdt1_bit.pdt1;// adc_uwRdsonVReg = ADC1->pdt2_bit.pdt2;// adc_uwRdsonWReg = ADC1->pdt3_bit.pdt3;// /* CH4 set to "Frozen" */ TMR1->cm2 &= ~0x7000; /* CH4 set to "PWM mode 1" */ TMR1->cm2 |= 0x6000; hw_SetRdsonSample(ADC_CHANNEL_6); } else { // GPIOB->odt ^= GPIO_PINS_11; // gpio_bits_set(GPIOC,GPIO_PINS_13);// if( (pwm_stGenOut.blSampleCalibFlag == TRUE)&&(TMR1->c4dt!=pwm_stGenCoef.uwHPWMPd)) { adc_uwADDMAPhase1 = ADC1->pdt1_bit.pdt1;// if(pwm_stGenOut.uwSingelRSampleArea == SampleA) { adc_uwIaReg = ADC1->pdt2_bit.pdt2;//// GPIOC->odt ^= GPIO_PINS_15; } if(pwm_stGenOut.uwSingelRSampleArea == SampleB) { adc_uwIbReg = ADC1->pdt3_bit.pdt3;// } } // /* CH4 set to "Frozen" */ TMR1->cm2 &= ~0x7000; // /* CH4 set to "PWM mode 2" */ TMR1->cm2 |= 0x7000; // hw_SetIphaseSample(); // adc_enable(ADC1,FALSE); // // adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇� } adc_flag_clear(ADC1,ADC_PCCE_FLAG);// //娓匒DC娉ㄥ叆缁勪腑鏂爣蹇� } #endif /* add user code end ADC1_CMP_IRQ 0 */ /* add user code begin ADC1_CMP_IRQ 1 */ /* add user code end ADC1_CMP_IRQ 1 */ } /** * @brief this function handles TMR1 brake overflow trigger and hall handler. * @param none * @retval none */ UWORD tmpSigRTrigZ1 = 0; UWORD SampUpTige = 0; UWORD SampDowmTige = 0; UWORD Samp_Step =0; void MOTOR_PWM_INST_IRQHandler(void) //void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void) { // ECnt++; /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 0 */ //if(0)//if(tmr_flag_get(TMR1,TMR_BRK_FLAG))//if (TIM_GetFlagStatus(TIM1, TIM_FLAG_Break)) // { //// tmr_flag_clear(TMR1,TMR_BRK_FLAG);//TIM_ClearFlag(TIM1, TIM_FLAG_Break); // // } // IO_CHECKIO_H(); switch (DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST)) { case DL_TIMER_IIDX_FAULT: FCnt++; //DL_GPIO_setPins(GPIOA, DL_GPIO_PIN_31); DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_0_INDEX); DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_1_INDEX); DL_Timer_overrideCCPOut(MOTOR_PWM_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, DL_TIMER_CC_2_INDEX); hw_voPWMOff(); // IO_FTESTLED_ON(); // alm_unCode.bit.IPMFlt = TRUE; break; case DL_TIMER_IIDX_ZERO: ECnt++; // if(( Samp_Step==0) ||( Samp_Step>=4)) // Samp_Step=1; // else // Samp_Step++; // switch (Samp_Step) // { // case 1: //// adc_enable(ADC1,TRUE); // // GPIOB->odt ^= GPIO_PINS_11; // /* Set Rdson sample trigger */ // //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦 // /* ADC1 regular channel trigger */ //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE); // // tbc_voUpIsr(); // // DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN); // break; // case 3: // /* ADC Rdson calibration with single resistance*/ // if (TimingDelay != 0) // { // TimingDelay--; // } // if(bikespeed_stFreGetOut.uwCaputureOverflowCnt<60000) // bikespeed_stFreGetOut.uwCaputureOverflowCnt++; // // cadence_stFreGetOut.uwCaputureOverflowCnt++; // tbs_voIsr();//20241017 //// if(BikeLedGloFun.blBike_ForwardLedSta==TRUE) //// { //// BikeLedGloFun.uwBikeLight_L_PWM +=100; //// if(BikeLedGloFun.uwBikeLight_L_PWM>720) //// { //// BikeLedGloFun.uwBikeLight_L_PWM=720; //// } //// //// BikeLedGloFun.uwBikeLight_F_PWM +=100; //// if(BikeLedGloFun.uwBikeLight_F_PWM>1800) //// { //// BikeLedGloFun.uwBikeLight_F_PWM=1800; //// } //// DL_TimerG_setCaptureCompareValue(PWM_2_INST, BikeLedGloFun.uwBikeLight_L_PWM, GPIO_PWM_2_C1_IDX); //// DL_TimerG_setCaptureCompareValue(PWM_3_INST, BikeLedGloFun.uwBikeLight_F_PWM, GPIO_PWM_3_C1_IDX);//max=1800 //// } // break; // default: // // break; // } // gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15; // /* ADC1 regular channel trigger */ // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE); // tbc_voUpIsr(); // tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update); // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE)) // { // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE) // { // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ; // IO_FORWARDLED_ON(); //寮�鍓嶇伅 // BikeLedGloFun.blBike_ForwardLedSta=TRUE; // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++; // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64) // { // BikeLedGloFun.blBike_ForwardLedStart=FALSE; // } // } // } // if(( BikeLedGloFun.blBike_BackLedSta==TRUE) &&(BikeLedGloFun.blBike_BackLedStart==TRUE)) // { // if( BikeLedGloFun.blBike_BackLedDetErr==TRUE) // // { // BikeLedGloFun.blBike_BackLedDetErr=FALSE; // IO_BACKLED_ON(); // BikeLedGloFun.uwBike_BackLedDetErrTime++; // if( BikeLedGloFun.uwBike_BackLedDetErrTime>=64) // { // BikeLedGloFun.blBike_BackLedStart=FALSE; // } // } // } break; case DL_TIMER_IIDX_LOAD: // GCnt++; // DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN); // Samp_Step++; //// DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);// // switch (Samp_Step) // { // case 2: // // gpio_bits_set(GPIOB,GPIO_PINS_11); // // adc_enable(ADC1,FALSE);// // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1; // // gpio_bits_reset(GPIOB,GPIO_PINS_11); // #if(JSCOPE_EN!=0) // Jscope_WtiteData(); // #endif // break; // case 4: // // GPIOC->odt ^= GPIO_PINS_13; // // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0]; // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1]; // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2]; // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3]; // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4]; // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5]; // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */ // // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); // // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE); // //// pwm_stGenOut.uwNewTIM1COMPR[0]=900 ; //// pwm_stGenOut.uwNewTIM1COMPR[1]=1250; //// pwm_stGenOut.uwNewTIM1COMPR[2]=450 ; // // // TIMER_CC_A_INDEX(pwm_stGenOut.uwNewTIM1COMPR[0]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_0_INDEX);//A // TIMER_CC_B_INDEX(pwm_stGenOut.uwNewTIM1COMPR[1]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_2_INDEX); //B // TIMER_CC_C_INDEX(pwm_stGenOut.uwNewTIM1COMPR[2]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_1_INDEX);//C // // // adc_enable(ADC1,TRUE);// // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST,2, DL_TIMER_CC_4_INDEX); //采样点设置 // break; // default: // // break; // } break; default: break; } // IO_CHECKIO_L(); // IO_CHECKIO_L(); ////if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_ZERO ) // { // // GPIOC->scr = GPIO_PINS_13; // GPIOC->odt ^= GPIO_PINS_13; // // #if(SampleModelSelect == DOUBLERESISTANCE) // // ULONG OVtimeCnt = 0; //// if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0) // if ((TIM1->CR1 & TIM_CR1_DIR) == 0) // When Counting Up // 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 // { // // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_Z_SET);// tmr_flag_clear(TMR1,TMR_OVF_FLAG);// // // gpio_bits_reset(GPIOC,GPIO_PINS_15); // if(( Samp_Step==0) ||( Samp_Step>=4)) // Samp_Step=1; // else // Samp_Step++; // switch (Samp_Step) // { // case 1: //// adc_enable(ADC1,TRUE); // // GPIOB->odt ^= GPIO_PINS_11; // /* Set Rdson sample trigger */ // //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦 // /* ADC1 regular channel trigger */ //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE); // // tbc_voUpIsr(); // // break; // case 3: // /* ADC Rdson calibration with single resistance*/ // if (TimingDelay != 0) // { // TimingDelay--; // } // break; // default: // // break; // } // //// gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15; //// /* ADC1 regular channel trigger */ //// adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE); //// tbc_voUpIsr(); //// tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update); // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE)) // { // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE) // { // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ; // IO_FORWARDLED_ON(); //寮�鍓嶇伅 // BikeLedGloFun.blBike_ForwardLedSta=TRUE; // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++; // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64) // { // BikeLedGloFun.blBike_ForwardLedStart=FALSE; // } // } // } // if(( BikeLedGloFun.blBike_BackLedSta==TRUE) &&(BikeLedGloFun.blBike_BackLedStart==TRUE)) // { // if( BikeLedGloFun.blBike_BackLedDetErr==TRUE) // // { // BikeLedGloFun.blBike_BackLedDetErr=FALSE; // IO_BACKLED_ON(); // BikeLedGloFun.uwBike_BackLedDetErrTime++; // if( BikeLedGloFun.uwBike_BackLedDetErrTime>=64) // { // BikeLedGloFun.blBike_BackLedStart=FALSE; // } // } // } // } // else if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_LOAD ) // { // // gpio_bits_set(GPIOC,GPIO_PINS_15); //// 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);// // //--------------------------- // Samp_Step++; // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);// // switch (Samp_Step) // { // case 2: // // gpio_bits_set(GPIOB,GPIO_PINS_11); //// adc_enable(ADC1,FALSE);// // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1; // // gpio_bits_reset(GPIOB,GPIO_PINS_11); // #if(JSCOPE_EN!=0) // Jscope_WtiteData(); // #endif // break; // case 4: // // GPIOC->odt ^= GPIO_PINS_13; // // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0]; // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1]; // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2]; // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3]; // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4]; // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5]; // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */ //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE); // // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_0_INDEX); //B // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_2_INDEX);//C // DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_3_INDEX);//A //// adc_enable(ADC1,TRUE);// // break; // default: // // break; // } // // // adc_enable(ADC1,TRUE);// ADC_Cmd(ADC1, ENABLE); //// gpio_bits_set(GPIOC,GPIO_PINS_15); //// tmr_counter_value_set(TMR6,0); // TIM4->CNT = 0; //// adc_enable(ADC1,FALSE);// ADC_Cmd(ADC1, DISABLE); //鍏抽棴ADC瑙勫垯缁� //// tbc_voDownIsr(); //// while ((tmr_counter_value_get(TMR6) < (HW_PWM_PERIOD)) && (OVtimeCnt < ((HW_HHPWM_PERIOD * FPWM_HZ)))) //36M clk //// { //// OVtimeCnt++; //// }; //// //// /* Load PWM Compare value */ //// hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0]; //// hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1]; //// hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2]; //// hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3]; //// hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4]; //// hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5]; //// /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */ //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE); //// //// adc_enable(ADC1,TRUE);// ADC_Cmd(ADC1, ENABLE); //// //// tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update); // } // else // { // if(DL_TimerA_getPendingInterrupt(MOTOR_PWM_INST) & DL_TIMER_IIDX_FAULT ) // { // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_F_SET);// // GCnt++; // hw_voPWMOff(); // } // // } // // //#elif(SampleModelSelect == COMBINATION) // // // ULONG OVtimeCnt = 0; // // if( (((uint8_t)TMR1->ctrl1) & 0x10) ==0)// When Counting Up 璁℃暟鍣ㄥ悜涓婅鏁帮紝鐜板湪娉㈣胺 // { // tmr_flag_clear(TMR1,TMR_OVF_FLAG);// // // gpio_bits_reset(GPIOC,GPIO_PINS_15); // if(( Samp_Step==0) ||( Samp_Step>=4)) // Samp_Step=1; // else // Samp_Step++; // switch (Samp_Step) // { // case 1: // adc_enable(ADC1,TRUE); // // GPIOB->odt ^= GPIO_PINS_11; // /* Set Rdson sample trigger */ // TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦 // /* ADC1 regular channel trigger */ // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE); // // tbc_voUpIsr(); // // break; // case 3: // /* ADC Rdson calibration with single resistance*/ // // break; // default: // // break; // } // // // #if(JSCOPE_EN!=0) // Jscope_WtiteData(); // #endif // } // else //鍚戜笅璁℃暟锛屾尝宄� // { // // gpio_bits_set(GPIOC,GPIO_PINS_15); // tmr_flag_clear(TMR1,TMR_OVF_FLAG);// // //--------------------------- // Samp_Step++; // // switch (Samp_Step) // { // case 2: // // gpio_bits_set(GPIOB,GPIO_PINS_11); // adc_enable(ADC1,FALSE);// // tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1; // // gpio_bits_reset(GPIOB,GPIO_PINS_11); // break; // case 4: // // GPIOC->odt ^= GPIO_PINS_13; // adc_enable(ADC1,TRUE);// //// if(tmpSigRTrigZ1>700) //// { //// TMR1->c4dt= tmpSigRTrigZ1;///TIM_SetCompare4(TIM1, tmpSigRTrigZ1); //// } //// else //// { //// TMR1->c4dt= 1500; //// } // TMR1->c4dt= tmpSigRTrigZ1; // tmpSigRTrigZ1 = pwm_stGenOut.uwSigRTrig; // hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0]; // hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1]; // hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2]; // hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3]; // hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4]; // hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5]; // /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */ // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE); // // break; // default: // // break; // } // // // //--------------------------- // // //// tmr_counter_value_set(TMR6,0); // TIM4->CNT = 0; //// gpio_bits_set(GPIOC,GPIO_PINS_15); //// adc_enable(ADC1,FALSE);// //// //// tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 //// //// while ((tmr_counter_value_get(TMR6) < (HW_PWM_PERIOD)) && (OVtimeCnt < ((HW_HHPWM_PERIOD * FPWM_HZ)))) //36M clk //// { //// OVtimeCnt++; //// }; //// //// /* Set Ibus sample trigger */ //// adc_enable(ADC1,TRUE);// ADC_Cmd(ADC2, ENABLE); //// TMR1->c4dt= 500;// tmpSigRTrigZ1;///TIM_SetCompare4(TIM1, tmpSigRTrigZ1); //// tmpSigRTrigZ1 = pwm_stGenOut.uwSigRTrig; //// /* Load PWM Compare value */ //// hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0]; //// hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1]; //// hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2]; //// hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3]; //// hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4]; //// hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5]; //// /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */ //// tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); //// dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE); //// //// adc_enable(ADC1,TRUE);// // // // } // // //#endif // } // BrkFlg++; /* add user code end TMR1_BRK_OVF_TRG_HALL_IRQ 0 */ /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 1 */ /* add user code end TMR1_BRK_OVF_TRG_HALL_IRQ 1 */ } /** * @brief this function handles TMR1 channel handler. * @param none * @retval none */ //void TMR1_CH_IRQHandler(void) //{ // /* add user code begin TMR1_CH_IRQ 0 */ // // if(tmr_interrupt_flag_get(TMR1,TMR_OVF_FLAG)) // // { //// if(tmr_cnt_dir_get(TMR1)) //// { //// gpio_bits_set(Break_GPIO_PORT,Break_PIN); //// }else{ //// gpio_bits_reset(Break_GPIO_PORT,Break_PIN); //// } // //Break_GPIO_PORT->odt ^= Break_PIN; // // } // // // /* add user code end TMR1_CH_IRQ 0 */ // /* add user code begin TMR1_CH_IRQ 1 */ // // /* add user code end TMR1_CH_IRQ 1 */ //} /** * @brief this function handles TMR3 handler. * @param none * @retval none */ void GROUP1_IRQHandler(void) //void TMR3_GLOBAL_IRQHandler(void) { // switch (DL_COMP_getPendingInterrupt(COMP_0_INST)) { // over Cur // case DL_COMP_IIDX_OUTPUT_EDGE: // // hw_voPWMOff(); // // IO_FTESTLED_ON(); // // alm_unCode.bit.IPMFlt = TRUE; // // break; // case DL_COMP_IIDX_OUTPUT_EDGE_INV: // // break; // default: // break; // } //F_LED switch (DL_COMP_getPendingInterrupt(COMP_FLEDCHECK_INST)) { case DL_COMP_IIDX_OUTPUT_EDGE: if(BikeLedCheck_F.uwBike_LedFun!=1) { if(BikeLedCheck_F.uwBike_OpenLedEn!=0) { DL_TimerG_setCaptureCompareValue(PWM_F_INST, 0, GPIO_PWM_F_C1_IDX);//max=2304 } else { if (BikeLedCheck_F.blBike_LedSta == TRUE) { if(BikeLedCheck_F.uwBike_OpenPreTime<=2) { BikeLedCheck_F.uwBike_OpenPreTime=2; // CMPF++; BikeLedCheck_F.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM; DL_TimerG_setCaptureCompareValue(PWM_F_INST, BikeLedCheck_F.uwBikeLight_PWM, GPIO_PWM_F_C1_IDX);//max=2304 } } } if (BikeLedCheck_F.blBike_LedSta == TRUE) { BikeLedCheck_F.blBike_LedCurErr=TRUE; } } // CHMPF++; break; case DL_COMP_IIDX_OUTPUT_EDGE_INV: if((BikeLedCheck_F.uwBike_OpenLedEn!=0)&&(BikeLedCheck_F.uwBike_LedFun!=1)) { DL_TimerG_stopCounter(PWM_F_INST); BikeLedCheck_F.uwBikeLight_PWM=0; DL_TimerG_setCaptureCompareValue(PWM_F_INST, 0, GPIO_PWM_F_C1_IDX);//max=2304 } // CLMPF++; break; default: break; } uint32_t gpioA = DL_GPIO_getEnabledInterruptStatus( GPIOA,DL_GPIO_PIN_8 | DL_GPIO_PIN_3 ); uint32_t gpioB = DL_GPIO_getEnabledInterruptStatus( GPIOB, DL_GPIO_PIN_3 | DL_GPIO_PIN_2| DL_GPIO_PIN_8| DL_GPIO_PIN_15); //B_LED if (((gpioB & DL_GPIO_PIN_15) == DL_GPIO_PIN_15) &&(BikeLedCheck_B.uwBike_LedFun!=1)) { if(BikeLedCheck_B.uwBike_OpenLedEn!=0) { // DL_TimerG_stopCounter(PWM_B_L_INST); DL_Timer_overrideCCPOut(PWM_B_L_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, GPIO_PWM_B_L_C1_IDX); BikeLedCheck_B.uwBikeLight_PWM=0; DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, 0, GPIO_PWM_B_L_C1_IDX);//max=2304 CLMPF++; } else { if( BikeLedCheck_B.blBike_LedSta==TRUE) { if(BikeLedCheck_B.uwBike_OpenPreTime<=2) { BikeLedCheck_B.uwBike_OpenPreTime=2; CMPF++; BikeLedCheck_B.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM; DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, BikeLedCheck_B.uwBikeLight_PWM, GPIO_PWM_B_L_C1_IDX);//max=2304 } } } if( BikeLedCheck_B.blBike_LedSta==TRUE) BikeLedCheck_B.blBike_LedCurErr=TRUE; CHMPF++; DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_15); } //R_LED if (((gpioB & DL_GPIO_PIN_8) == DL_GPIO_PIN_8)&&(BikeLedCheck_R.uwBike_LedFun!=1)) { if(BikeLedCheck_R.uwBike_OpenLedEn!=0) { DL_TimerG_stopCounter(PWM_R_INST); BikeLedCheck_R.uwBikeLight_PWM=0; DL_TimerG_setCaptureCompareValue(PWM_R_INST, 0, GPIO_PWM_R_C1_IDX);//max=2304 // CLMPF++; } else { if(BikeLedCheck_R.blBike_LedSta==TRUE) { if(BikeLedCheck_R.uwBike_OpenPreTime<=2) { BikeLedCheck_R.uwBike_OpenPreTime=2; // CMPF++; BikeLedCheck_R.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM; DL_TimerG_setCaptureCompareValue(PWM_R_INST, BikeLedCheck_R.uwBikeLight_PWM, GPIO_PWM_R_C1_IDX);//max=2304 } } } if(BikeLedCheck_R.blBike_LedSta==TRUE) BikeLedCheck_R.blBike_LedCurErr=TRUE; // CHMPF++; DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_8); } //-L-LED if (((gpioA & DL_GPIO_PIN_3) == DL_GPIO_PIN_3) &&(BikeLedCheck_L.uwBike_LedFun!=1)) { if(BikeLedCheck_L.uwBike_OpenLedEn!=0) { // DL_TimerG_stopCounter(PWM_B_L_INST); DL_Timer_overrideCCPOut(PWM_B_L_INST, DL_TIMER_FORCE_OUT_LOW, DL_TIMER_FORCE_CMPL_OUT_LOW, GPIO_PWM_B_L_C0_IDX); BikeLedCheck_L.uwBikeLight_PWM=0; DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, 0, GPIO_PWM_B_L_C0_IDX);//max=2304 // CLMPF++; } else { if(BikeLedCheck_L.blBike_LedSta==TRUE) { if(BikeLedCheck_L.uwBike_OpenPreTime<=2) { BikeLedCheck_L.uwBike_OpenPreTime=2; CMPF++; BikeLedCheck_L.uwBikeLight_PWM=LIGHT_SECTPWM;//LIGHT_SECTPWM; DL_TimerG_setCaptureCompareValue(PWM_B_L_INST, BikeLedCheck_L.uwBikeLight_PWM, GPIO_PWM_B_L_C0_IDX);//max=2304 } } } if(BikeLedCheck_L.blBike_LedSta==TRUE) BikeLedCheck_L.blBike_LedCurErr=TRUE; // CHMPF++; DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_3); } /* add user code begin TMR3_GLOBAL_IRQ 0 */ 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)) { HGcnt++; switchhall_voTim3Int(); DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_8); DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_3); DL_GPIO_clearInterruptStatus(GPIOB, DL_GPIO_PIN_2); } // if ((gpioA & DL_GPIO_PIN_26) == DL_GPIO_PIN_26) // { // DL_GPIO_clearInterruptStatus(GPIOA, DL_GPIO_PIN_26); // } /* add user code end TMR3_GLOBAL_IRQ 0 */ /* add user code begin TMR3_GLOBAL_IRQ 1 */ /* add user code end TMR3_GLOBAL_IRQ 1 */ /* * Get the pending interrupt for the GPIOA port and store for * comparisons later */ } /** * @brief this function handles TMR16 handler. * @param none * @retval none */ //void SPEED_INST_IRQHandler(void) //void TMR16_GLOBAL_IRQHandler(void) //{ // // /* add user code begin TMR16_GLOBAL_IRQ 0 */ ////Bike Speed // UWORD uwIntSource = 0; // // // switch (DL_TimerG_getPendingInterrupt(SPEED_INST)) // { // case DL_TIMER_IIDX_CC0_DN: // SPEED_edgeCapture = DL_Timer_getCaptureCompareValue(SPEED_INST, DL_TIMER_CC_0_INDEX); // //// tmr_flag_clear(TMR16,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC4); // uwIntSource = 3; // // tempIO2 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11); //// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_8))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11)) // { //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Falling); // } //// else // { //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Rising); // } // // // bikespeed_voBikeSpeedCal(uwIntSource); // // break; // case DL_TIMER_IIDX_ZERO: // uwIntSource = 1; // /* TBS interrupt */ // // tbs_voIsr(); // // /* CadenceCal and BikespeedCal */ // // // bikespeed_voBikeSpeedCal(uwIntSource); // DCnt++; // break; // default: // break; // } // // //// if(tmr_flag_get(TMR16,TMR_OVF_FLAG))// if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update)) //// { //// tmr_flag_clear(TMR16,TMR_OVF_FLAG);// //// uwIntSource = 1; //// /* TBS interrupt */ //// tbs_voIsr(); //// //// /* CadenceCal and BikespeedCal */ //// //// bikespeed_voBikeSpeedCal(uwIntSource); //// //// } //// else if (tmr_flag_get(TMR16,TMR_C1_FLAG))//(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC4)) //// { //// tmr_flag_clear(TMR16,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC4); //// uwIntSource = 3; //// // tempIO2 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11); //// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_8))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11)) //// { //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Falling); //// } //// else //// { //// tmr_output_channel_polarity_set(TMR16,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC4PolarityConfig(TIM2,TIM_ICPolarity_Rising); //// } //// //// bikespeed_voBikeSpeedCal(uwIntSource); //// } // /* add user code end TMR16_GLOBAL_IRQ 0 */ // /* add user code begin TMR16_GLOBAL_IRQ 1 */ // // /* add user code end TMR16_GLOBAL_IRQ 1 */ //} /** * @brief this function handles TMR17 handler. * @param none * @retval none */ //void TAPIN_INST_IRQHandler(void)//void TMR17_GLOBAL_IRQHandler(void) //{ // /* add user code begin TMR17_GLOBAL_IRQ 0 */ ////韪忛牷 //UWORD uwIntSource = 0; // // // switch (DL_TimerG_getPendingInterrupt(TAPIN_INST)) // { // case DL_TIMERG_IIDX_CC0_DN: // TIPIN_edgeCapture = DL_Timer_getCaptureCompareValue(TAPIN_INST, DL_TIMER_CC_0_INDEX); // uwIntSource = 2; // // tempIO1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10); // // if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_9))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10)) // // { // // tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling); // // } // // else // // { // // tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising); // // } // cadence_voCadenceCal(uwIntSource); // // break; // case DL_TIMER_IIDX_ZERO: // uwIntSource = 1; // /* TBS interrupt */ // // tbs_voIsr(); // // /* CadenceCal and BikespeedCal */ // cadence_voCadenceCal(uwIntSource); // ECnt++; // break; // default: // break; // } // //// if(tmr_flag_get(TMR17,TMR_OVF_FLAG))// if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update)) //// { //// uwIntSource = 1; //// /* TBS interrupt */ //// // tbs_voIsr(); //// //// /* CadenceCal and BikespeedCal */ //// cadence_voCadenceCal(uwIntSource); //// //// tmr_flag_clear(TMR17,TMR_OVF_FLAG);// TIM_ClearFlag(TIM2, TIM_FLAG_Update); //// } //// else if (tmr_flag_get(TMR17,TMR_C1_FLAG))//(TIM_GetFlagStatus(TIM2, TIM_FLAG_CC3)) //// { //// uwIntSource = 2; //// // tempIO1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10); ////// if(gpio_input_data_bit_read(GPIOB,GPIO_PINS_9))//(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10)) ////// { ////// tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_LOW); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Falling); ////// } ////// else ////// { ////// tmr_output_channel_polarity_set(TMR17,TMR_SELECT_CHANNEL_1,TMR_POLARITY_ACTIVE_HIGH); // TIM_OC3PolarityConfig(TIM2,TIM_ICPolarity_Rising); ////// } //// cadence_voCadenceCal(uwIntSource); //// tmr_flag_clear(TMR17,TMR_C1_FLAG);//TIM_ClearFlag(TIM2, TIM_FLAG_CC3); //// } //// //// /* add user code end TMR17_GLOBAL_IRQ 0 */ //// /* add user code begin TMR17_GLOBAL_IRQ 1 */ //// //// /* add user code end TMR17_GLOBAL_IRQ 1 */ //} /** * @brief this function handles USART1 handler. * @param none * @retval none */ void UART0_IRQHandler(void) { // USARTx_Rx_IRQ(&UART_RxBuff_Struct_OBC); // USARTx_Tx_IRQ(&UART_TxBuff_Struct_OBC); USARTx_RxTX_IRQ(&UART_RxBuff_Struct_OBC,&UART_TxBuff_Struct_OBC,&stUSART_FrameBuf_OBC); } // ///** // * @brief this function handles USART2 handler. // * @param none // * @retval none // */ //void UART_BAT_INST_IRQHandler(void) //{ // USARTx_Rx_IRQ(&UART_RxBuff_Struct_BMS); // USARTx_Tx_IRQ(&UART_TxBuff_Struct_BMS); //} // ULONG id = 0; void MCAN0_INST_IRQHandler(void) { volatile ULONG gInterruptLine1Status = 0; DL_MCAN_RxFIFOStatus rxFS; switch (DL_MCAN_getPendingInterrupt(MCAN0_INST)) { case DL_MCAN_IIDX_LINE1: /* Check MCAN interrupts fired during TX/RX of CAN package */ gInterruptLine1Status |= DL_MCAN_getIntrStatus(MCAN0_INST); DL_MCAN_clearIntrStatus(MCAN0_INST, gInterruptLine1Status,DL_MCAN_INTR_SRC_MCAN_LINE_1); if ((gInterruptLine1Status & MCAN_IR_RF0N_MASK) == MCAN_IR_RF0N_MASK) { rxFS.fillLvl = 0; rxFS.num = DL_MCAN_RX_FIFO_NUM_0; while ((rxFS.fillLvl) == 0) { DL_MCAN_getRxFIFOStatus(MCAN0_INST, &rxFS); } DL_MCAN_readMsgRam(MCAN0_INST, DL_MCAN_MEM_TYPE_FIFO, 0U, rxFS.num, pRxMsg); DL_MCAN_writeRxFIFOAck(MCAN0_INST, rxFS.num, rxFS.getIdx); if(pRxMsg->xtd == 0) { id = ((pRxMsg->id) & 0x1FFC0000)>>18; } else { id = pRxMsg->id & 0x1FFFFFFF; } if(pRxMsg->xtd == ID_MODE_STANDARD) { //11-bit standard identifier switch (id) { case ID_PBU_BC: case ID_PBU_TO_MC: //接收PBU数据 { CAN_RxBuf_Struct_PBU.ulBufID = id; CAN_Rx_ISR(&CAN_RxBuf_Struct_PBU, pRxMsg->dlc); break; } case ID_BMS_BC: case ID_BMS_TO_MC: //接收BMS数据 { CAN_RxBuf_Struct_BMS.ulBufID = id; CAN_Rx_ISR(&CAN_RxBuf_Struct_BMS, pRxMsg->dlc); break; } case ID_HMI_BC: case ID_HMI_TO_MC: //接收HMI数据 { CAN_RxBuf_Struct_HMI.ulBufID = id; CAN_Rx_ISR(&CAN_RxBuf_Struct_HMI, pRxMsg->dlc); break; } case ID_CDL_BC: case ID_CDL_TO_MC: // case ID_CDL_TO_MC_TE://接收CDL数据 { CAN_RxBuf_Struct_CDL.ulBufID = id; CAN_Rx_ISR(&CAN_RxBuf_Struct_CDL, pRxMsg->dlc); break; } default: break; } } else { //29-bit extended identifier } gInterruptLine1Status &= ~(MCAN_IR_RF0N_MASK); } break; default: break; } } ///** // * @brief this function handles EXINT Line 1 & 0 handler. // * @param none // * @retval none // */ //void EXINT1_0_IRQHandler(void) //{ // UWORD lightCnt=0; // UWORD lightCntTime=0; // UWORD lightTime=0; // UWORD BacklightTime=0; // // /* add user code begin EXINT1_0_IRQ 0 */ // if(exint_interrupt_flag_get(EXINT_LINE_0) != RESET) // { // // for(lightCnt=0;lightCnt<=12;lightCnt++) // { // if(IO_FORWARDLEDCHECK_PORT()==0) // lightCntTime++; // } // // if(lightCntTime>=(11)) // { // IO_FORWARDLED_OFF(); // BikeLedGloFun.blBike_ForwardLedDetErr=TRUE; // lightCntTime=0; // } // exint_flag_clear(EXINT_LINE_0); // } // /* add user code end EXINT1_0_IRQ 0 */ // /* add user code begin EXINT1_0_IRQ 1 */ // if(exint_interrupt_flag_get(EXINT_LINE_1) != RESET) // { // for(lightTime=0;lightTime<=12;lightTime++)//40 // { // if(IO_BACKLEDCHECK_PORT()==0) // BacklightTime++; // } // if(BacklightTime>=(11)) // { // IO_BACKLED_OFF(); // BikeLedGloFun.blBike_BackLedDetErr=TRUE ; // BacklightTime=0; // } // // exint_flag_clear(EXINT_LINE_1); // } // /* add user code end EXINT1_0_IRQ 1 */ //} void TIMA1_IRQHandler(void) //void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void) { // ECnt++; /* add user code begin TMR1_BRK_OVF_TRG_HALL_IRQ 0 */ //if(0)//if(tmr_flag_get(TMR1,TMR_BRK_FLAG))//if (TIM_GetFlagStatus(TIM1, TIM_FLAG_Break)) // { //// tmr_flag_clear(TMR1,TMR_BRK_FLAG);//TIM_ClearFlag(TIM1, TIM_FLAG_Break); // // } switch (DL_TimerA_getPendingInterrupt(TIMA1)) { case DL_TIMER_IIDX_ZERO: ECnt++; if(( Samp_Step==0) ||( Samp_Step>=4)) Samp_Step=1; else Samp_Step++; switch (Samp_Step) { case 1: // adc_enable(ADC1,TRUE); // GPIOB->odt ^= GPIO_PINS_11; /* Set Rdson sample trigger */ //TMR1->c4dt= 108;//108;//pwm_stGenOut.uwRDSONTrig;// TIM_SetCompare4(TIM1, pwm_stGenOut.uwRDSONTrig); //pwm鏈�澶у嚡90%锛屽湪娉㈣胺3us浣嶇疆閲囬泦姣嶇嚎鐢甸樆鐢垫祦 /* ADC1 regular channel trigger */ // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE); tbc_voUpIsr(); // DL_GPIO_togglePins(LED_PORT, LED_LED1_PIN); break; case 3: /* ADC Rdson calibration with single resistance*/ if (TimingDelay != 0) { TimingDelay--; } if(bikespeed_stFreGetOut.uwCaputureOverflowCnt<60000) bikespeed_stFreGetOut.uwCaputureOverflowCnt++; // if(cadence_stFreGetOut.uwCaputureOverflowCnt<60000) cadence_stFreGetOut.uwCaputureOverflowCnt++; tbs_voIsr();//20241017 // if(BikeLedGloFun.blBike_ForwardLedSta==TRUE) // { // BikeLedGloFun.uwBikeLight_L_PWM +=100; // if(BikeLedGloFun.uwBikeLight_L_PWM>720) // { // BikeLedGloFun.uwBikeLight_L_PWM=720; // } // // BikeLedGloFun.uwBikeLight_F_PWM +=100; // if(BikeLedGloFun.uwBikeLight_F_PWM>1800) // { // BikeLedGloFun.uwBikeLight_F_PWM=1800; // } // DL_TimerG_setCaptureCompareValue(PWM_2_INST, BikeLedGloFun.uwBikeLight_L_PWM, GPIO_PWM_2_C1_IDX); // DL_TimerG_setCaptureCompareValue(PWM_3_INST, BikeLedGloFun.uwBikeLight_F_PWM, GPIO_PWM_3_C1_IDX);//max=1800 // } break; default: break; } // gpio_bits_reset(GPIOC,GPIO_PINS_15);// GPIOC->odt ^= GPIO_PINS_15; // /* ADC1 regular channel trigger */ // adc_ordinary_software_trigger_enable(ADC1,TRUE);// ADC_SoftwareStartConvCmd(ADC1, ENABLE); // tbc_voUpIsr(); // tmr_flag_clear(TMR1,TMR_OVF_FLAG);// TIM_ClearFlag(TIM1, TIM_FLAG_Update); // if((cp_stBikeRunInfoPara.uwLightSwitch!=0) &&(BikeLedGloFun.blBike_ForwardLedStart==TRUE)) // { // if(BikeLedGloFun.blBike_ForwardLedDetErr==TRUE) // { // BikeLedGloFun.blBike_ForwardLedDetErr=FALSE ; // IO_FORWARDLED_ON(); //寮�鍓嶇伅 // BikeLedGloFun.blBike_ForwardLedSta=TRUE; // BikeLedGloFun.uwlBike_ForwardLedDetErrTime++; // if(BikeLedGloFun.uwlBike_ForwardLedDetErrTime>=64) // { // BikeLedGloFun.blBike_ForwardLedStart=FALSE; // } // } // } break; case DL_TIMER_IIDX_LOAD: GCnt++; // DL_GPIO_togglePins(LED_PORT, LED_LED2_PIN); Samp_Step++; // DL_Timer_clearInterruptStatus(MOTOR_PWM_INST,GPTIMER_CPU_INT_IMASK_L_SET);// switch (Samp_Step) { case 2: // gpio_bits_set(GPIOB,GPIO_PINS_11); // adc_enable(ADC1,FALSE);// tbc_voDownIsr(); //鐢垫祦 /鐢靛帇鑾峰彇 锛岃绠楁牎鍑嗙數娴侀噰鏍风偣 TMR1->c4dt=1000;// tmpSigRTrigZ1; // gpio_bits_reset(GPIOB,GPIO_PINS_11); #if(JSCOPE_EN!=0) Jscope_WtiteData(); #endif break; case 4: // GPIOC->odt ^= GPIO_PINS_13; hw_uwPWMCmpr[0] = pwm_stGenOut.uwNewTIM1COMPR[0]; hw_uwPWMCmpr[1] = pwm_stGenOut.uwNewTIM1COMPR[1]; hw_uwPWMCmpr[2] = pwm_stGenOut.uwNewTIM1COMPR[2]; hw_uwPWMCmpr[3] = pwm_stGenOut.uwNewTIM1COMPR[3]; hw_uwPWMCmpr[4] = pwm_stGenOut.uwNewTIM1COMPR[4]; hw_uwPWMCmpr[5] = pwm_stGenOut.uwNewTIM1COMPR[5]; /* Enable PWM DMA, hw_uwPWMCmpr[0/1/2] at underflow update */ // tmr_dma_request_enable(TMR1,TMR_OVERFLOW_DMA_REQUEST,TRUE);// TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE); // dma_channel_enable(DMA1_CHANNEL5,TRUE); //DMA_Cmd(DMA1_Channel5, ENABLE); // pwm_stGenOut.uwNewTIM1COMPR[0]=900 ; // pwm_stGenOut.uwNewTIM1COMPR[1]=1250; // pwm_stGenOut.uwNewTIM1COMPR[2]=450 ; TIMER_CC_A_INDEX(pwm_stGenOut.uwNewTIM1COMPR[0]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[0], DL_TIMER_CC_0_INDEX);//A TIMER_CC_B_INDEX(pwm_stGenOut.uwNewTIM1COMPR[1]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[1], DL_TIMER_CC_2_INDEX); //B TIMER_CC_C_INDEX(pwm_stGenOut.uwNewTIM1COMPR[2]);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST, pwm_stGenOut.uwNewTIM1COMPR[2], DL_TIMER_CC_1_INDEX);//C // adc_enable(ADC1,TRUE);// DL_TimerA_setCaptureCompareValue(MOTOR_PWM_INST,2, DL_TIMER_CC_4_INDEX); //采样点设置 break; default: break; } break; default: break; } // DL_GPIO_clearPins(GPIOA, DL_GPIO_PIN_31); } /* add user code begin 1 */ /* add user code end 1 */