STM32 Hal-Driver ADC-DMA Interrupt

Sep 29, 2015 1 Replies

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.



Michael

Hallo michael ,kannst du dein code der initalisierung mit hal posten. Danke

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required