More culling TS80P

This commit is contained in:
Ben V. Brown
2022-08-03 20:57:49 +10:00
parent 0c693a89cc
commit 2078b89be7
3 changed files with 60 additions and 149 deletions

View File

@@ -1198,7 +1198,7 @@ HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, ui
hadc->DMA_Handle->XferHalfCpltCallback = ADC_DMAHalfConvCplt; hadc->DMA_Handle->XferHalfCpltCallback = ADC_DMAHalfConvCplt;
/* Set the DMA error callback */ /* Set the DMA error callback */
hadc->DMA_Handle->XferErrorCallback = ADC_DMAError; // hadc->DMA_Handle->XferErrorCallback = ADC_DMAError;
/* Manage ADC and DMA start: ADC overrun interruption, DMA start, ADC */ /* Manage ADC and DMA start: ADC overrun interruption, DMA start, ADC */
/* start (in case of SW start): */ /* start (in case of SW start): */
@@ -1455,19 +1455,19 @@ __weak void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc) {
*/ */
} }
/** // /**
* @brief ADC error callback in non blocking mode // * @brief ADC error callback in non blocking mode
* (ADC conversion with interruption or transfer by DMA) // * (ADC conversion with interruption or transfer by DMA)
* @param hadc: ADC handle // * @param hadc: ADC handle
* @retval None // * @retval None
*/ // */
__weak void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc) { // __weak void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc) {
/* Prevent unused argument(s) compilation warning */ // /* Prevent unused argument(s) compilation warning */
UNUSED(hadc); // UNUSED(hadc);
/* NOTE : This function should not be modified. When the callback is needed, // /* NOTE : This function should not be modified. When the callback is needed,
function HAL_ADC_ErrorCallback must be implemented in the user file. // function HAL_ADC_ErrorCallback must be implemented in the user file.
*/ // */
} // }
/** /**
* @} * @}
@@ -1823,24 +1823,24 @@ void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma) {
HAL_ADC_ConvHalfCpltCallback(hadc); HAL_ADC_ConvHalfCpltCallback(hadc);
} }
/** // /**
* @brief DMA error callback // * @brief DMA error callback
* @param hdma: pointer to DMA handle. // * @param hdma: pointer to DMA handle.
* @retval None // * @retval None
*/ // */
void ADC_DMAError(DMA_HandleTypeDef *hdma) { // void ADC_DMAError(DMA_HandleTypeDef *hdma) {
/* Retrieve ADC handle corresponding to current DMA handle */ // /* Retrieve ADC handle corresponding to current DMA handle */
ADC_HandleTypeDef *hadc = (ADC_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; // ADC_HandleTypeDef *hadc = (ADC_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent;
/* Set ADC state */ // /* Set ADC state */
SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA); // SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
/* Set ADC error code to DMA error */ // /* Set ADC error code to DMA error */
SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_DMA); // SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_DMA);
/* Error callback */ // /* Error callback */
HAL_ADC_ErrorCallback(hadc); // HAL_ADC_ErrorCallback(hadc);
} // }
/** /**
* @} * @}

View File

@@ -603,29 +603,29 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) {
} }
/* Transfer Error Interrupt management **************************************/ /* Transfer Error Interrupt management **************************************/
else if ((RESET != (flag_it & (DMA_FLAG_TE1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA_IT_TE))) { // else if ((RESET != (flag_it & (DMA_FLAG_TE1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA_IT_TE))) {
/* When a DMA transfer error occurs */ // /* When a DMA transfer error occurs */
/* A hardware clear of its EN bits is performed */ // /* A hardware clear of its EN bits is performed */
/* Disable ALL DMA IT */ // /* Disable ALL DMA IT */
__HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); // __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE));
/* Clear all flags */ // /* Clear all flags */
hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex); // hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << hdma->ChannelIndex);
/* Update error code */ // /* Update error code */
hdma->ErrorCode = HAL_DMA_ERROR_TE; // hdma->ErrorCode = HAL_DMA_ERROR_TE;
/* Change the DMA state */ // /* Change the DMA state */
hdma->State = HAL_DMA_STATE_READY; // hdma->State = HAL_DMA_STATE_READY;
/* Process Unlocked */ // /* Process Unlocked */
__HAL_UNLOCK(hdma); // __HAL_UNLOCK(hdma);
if (hdma->XferErrorCallback != NULL) { // if (hdma->XferErrorCallback != NULL) {
/* Transfer error callback */ // /* Transfer error callback */
hdma->XferErrorCallback(hdma); // hdma->XferErrorCallback(hdma);
} // }
} // }
return; return;
} }

View File

@@ -3338,108 +3338,25 @@ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) {
/* Capture compare 1 event */ /* Capture compare 1 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) { if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) {
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) {
{ { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); }
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1;
/* Input capture event */
if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
// HAL_TIM_IC_CaptureCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
/* Output compare event */
else {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
// HAL_TIM_OC_DelayElapsedCallback(htim);
// HAL_TIM_PWM_PulseFinishedCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
}
} }
} }
/* Capture compare 2 event */ /* Capture compare 2 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) { if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) {
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) {
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2);
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2;
/* Input capture event */
if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
// HAL_TIM_IC_CaptureCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
/* Output compare event */
else {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
// HAL_TIM_OC_DelayElapsedCallback(htim);
// HAL_TIM_PWM_PulseFinishedCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
} }
} }
/* Capture compare 3 event */ /* Capture compare 3 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) { if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) {
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) {
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3);
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3;
/* Input capture event */
if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
// HAL_TIM_IC_CaptureCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
/* Output compare event */
else {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
// HAL_TIM_OC_DelayElapsedCallback(htim);
// HAL_TIM_PWM_PulseFinishedCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
} }
} }
/* Capture compare 4 event */ /* Capture compare 4 event */
if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) { if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) {
if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) {
__HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4);
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4;
/* Input capture event */
if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->IC_CaptureCallback(htim);
#else
// HAL_TIM_IC_CaptureCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
/* Output compare event */
else {
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->OC_DelayElapsedCallback(htim);
htim->PWM_PulseFinishedCallback(htim);
#else
// HAL_TIM_OC_DelayElapsedCallback(htim);
// HAL_TIM_PWM_PulseFinishedCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
} }
} }
/* TIM Update event */ /* TIM Update event */
@@ -4836,19 +4753,19 @@ uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel) {
* @{ * @{
*/ */
/** // /**
* @brief Period elapsed callback in non-blocking mode // * @brief Period elapsed callback in non-blocking mode
* @param htim TIM handle // * @param htim TIM handle
* @retval None // * @retval None
*/ // */
__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { // __weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
/* Prevent unused argument(s) compilation warning */ // /* Prevent unused argument(s) compilation warning */
UNUSED(htim); // UNUSED(htim);
/* NOTE : This function should not be modified, when the callback is needed, // /* NOTE : This function should not be modified, when the callback is needed,
the HAL_TIM_PeriodElapsedCallback could be implemented in the user file // the HAL_TIM_PeriodElapsedCallback could be implemented in the user file
*/ // */
} // }
/** /**
* @brief Period elapsed half complete callback in non-blocking mode * @brief Period elapsed half complete callback in non-blocking mode
@@ -5626,12 +5543,6 @@ static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma) {
/* nothing to do */ /* nothing to do */
} }
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->PWM_PulseFinishedCallback(htim);
#else
// HAL_TIM_PWM_PulseFinishedCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED;
} }