// // Created by cfif on 07.09.22. // #include #include "PwmCaptureFlagchip.h" void Get_Set_Tpu_PwmCaptureCallback(tPwmCaptureFlagchip *env) { if (env->etpu_captureconfig_tbl.eMeasureMode == TPU_PeriodMeasurement) { TPU_CaptureMeasPeriodServiceReq(env->TPU_CAPTURE_CHANNEL, &env->etpu_captureconfig_tbl); } else { TPU_CaptureMeasActivePeriodServiceReq(env->TPU_CAPTURE_CHANNEL, &env->etpu_captureconfig_tbl); } } void PWM_Capture_Initial( tPwmCaptureFlagchip *env, uint32_t PeriodTime, uint32_t ActiveTime, uint8_t TPU_CAPTURE_CHANNEL, uint8 TPU0_CH_PRIORITY, TPU_EventCallbackType Bsp_Tpu_PwmCallback, TPU_TCR1OverflowCallbackType Bsp_Tpu_OverflowCallBack) { env->etpu_captureconfig_tbl.u32PeriodTime = 0u; env->etpu_captureconfig_tbl.eMeasureMode = TPU_DutyMeasurementActiveHigh; env->etpu_captureconfig_tbl.eInputType = TPUE_DETECT_FALLING_EDGE_ONLY; env->etpu_captureconfig_tbl.u32SampleTime = 80000; // Ensure sample time > period env->etpu_captureconfig_tbl.u32ActiveTime = 0; env->etpu_captureconfig_tbl.LastTime = 0; env->etpu_captureconfig_tbl.StartTime = 0; env->etpu_Int_config_tbl.bEventIntEn = (bool) true; env->etpu_Int_config_tbl.bTCR1OverFlowEventIntEn = (bool) true; env->etpu_Int_config_tbl.bTCR2OverFlowEventIntEn = (bool) false; env->etpu_Int_config_tbl.pEventNotify = Bsp_Tpu_PwmCallback; env->etpu_Int_config_tbl.pHSANotify = NULL; env->etpu_Int_config_tbl.pTCR1OverflowNotify = Bsp_Tpu_OverflowCallBack; env->etpu_Int_config_tbl.pTCR2OverflowNotify = NULL; env->etpu_Int_config_tbl.eChTrigType = TPUH_TDL1_OR_TDL2_EVENT_NOT_GATED_BY_TSR; env->TPU_CAPTURE_CHANNEL = TPU_CAPTURE_CHANNEL; TPU_DeInit(); TPU_Init(); TPU_CaptureModeInit(TPU_CAPTURE_CHANNEL, &env->etpu_captureconfig_tbl); TPU_InitChannelInterrupt(TPU_CAPTURE_CHANNEL, &env->etpu_Int_config_tbl); if (TPU_CAPTURE_CHANNEL <= 7) { NVIC_EnableIRQ(TPU0_CH0_7_IRQn); NVIC_SetPriority(TPU0_CH0_7_IRQn, 1); } else if (TPU_CAPTURE_CHANNEL <= 15) { NVIC_EnableIRQ(TPU0_CH8_15_IRQn); NVIC_SetPriority(TPU0_CH8_15_IRQn, 2); } else if (TPU_CAPTURE_CHANNEL <= 23) { NVIC_EnableIRQ(TPU0_CH16_23_IRQn); NVIC_SetPriority(TPU0_CH16_23_IRQn, 3); } else if (TPU_CAPTURE_CHANNEL <= 31) { NVIC_EnableIRQ(TPU0_CH24_31_IRQn); NVIC_SetPriority(TPU0_CH24_31_IRQn, 4); } } /* tPwmIO vPwmCaptureGetIo(tPwmCaptureFlagchip *env) { tPwmIO io = { .env = env, .run = (PwmIOTransaction) vPwmRun, .setActivePercent = (PwmIOTransactionSetActivePercent) setActivePercent }; return io; } */