Hi, ich habe hier ein STM32-Projekt, bei dem ein Timer zyklisch eine
Im DMA-Interrupt sollen die Daten dann weiter verarbeitet werden.
Der DMA-Interrupt sieht derzeit so aus:
void DMA2_Stream0_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream0_IRQn 0 */
HAL_GPIO_WritePin(DBG5_GPIO_PORT, DBG5_GPIO_PIN, 1); HAL_ADC_Stop_DMA(&hadc1); __HAL_DMA_CLEAR_FLAG(&hdma_adc1, __HAL_DMA_GET_TC_FLAG_INDEX(&hdma_adc1));
RegulatorTask(GROUP_CD);
/* USER CODE END DMA2_Stream0_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_adc1); /* USER CODE BEGIN DMA2_Stream0_IRQn 1 */
// Starte neue Messung
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADC1_DMA_Data, 4); //deaktiviere Half Transfer Interrupt
__HAL_DMA_DISABLE_IT(&hdma_adc1, DMA_IT_HT);
__HAL_DMA_CLEAR_FLAG(&hdma_adc1, __HAL_DMA_GET_HT_FLAG_INDEX(&hdma_adc1));
HAL_GPIO_WritePin(DBG5_GPIO_PORT, DBG5_GPIO_PIN, 0);
/* USER CODE END DMA2_Stream0_IRQn 1 */ }
Nun habe ich das Problem, dass immer ein Half-Transfer und ein
Leider sieht der HAL-Treiber das nicht vor. In der Funktion
Diese Funktion wird wiederum vom oben verwendeten HAL_ADC_Start_DMA() aufgerufen.
dazu, dass der Treiber wieder auf den Originalstand gebracht wird.