Gast
#6113947
Halli zusammen,
ich habe folgendes Problem:
Über einen ADC schreibe ich die Werte mehrerer Channel in den Puffer
einer DMA mit bekannter Größe. Sobald diese fertig ist möchte ich die
Daten schnellmöglich berarbeiten. Daher möchte ich mit:
HAL_DMA_RegisterCallback(&DmaHandle, HAL_DMA_XFER_CPLT_CB_ID,
TransferComplete);
eine Funktion bestimmen, die beim Transfer Complete Interrupt auslöst.
Wenn ich das so mache wird meine Funktion allerdings nicht aufgerufen.
IRQ des DMA ist aktiviert...
Hier der Code:
//Init der DMA:
static void MX_DMA_Init(void)
{
/* DMA controller clock enable */
__HAL_RCC_DMA2_CLK_ENABLE();
/* DMA interrupt init */
/* DMA2_Stream0_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
}
//in der main Funtkion dann:
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU
Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the
Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_ADC1_Init();
MX_ETH_Init();
MX_TIM2_Init();
MX_TIM3_Init();
MX_TIM9_Init();
/* USER CODE BEGIN 2 */
HAL_DMA_RegisterCallback(&hdma_adc1, HAL_DMA_XFER_CPLT_CB_ID,
DMA_ISR);
... usw.
Weiß jemand worauf dabei zu achten ist? Ich kann nicht sehen was ich im
Vergleich zum Beispiel von ST anders mache (DMA_Flash2RAM Beispiel eines
beliebigen STMF4)