Hard Fault from HAL_DMA_ABORT_IT function
Hello ,
I am trying to making a BLE application with triggering external interrupts that came from camera sensor. Normally my interrupt handlers worked just fine, however when I try to add BLE function, code getting hard fault. Following lines in the function cause this fault.
HAL_DMA_Abort_IT(htim2.hdma[TIM_DMA_ID_UPDATE]);
__HAL_TIM_DISABLE_DMA(&htim2, TIM_DMA_UPDATE);
Is There a way to abort DMA another way or how can I fix the this error?
void EXTI2_IRQHandler(void)
{
/* USER CODE BEGIN EXTI2_IRQn 2 */
if((__HAL_GPIO_EXTI_GET_FLAG(GPIO_PIN_2))&&(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_2)==GPIO_PIN_SET))
{
__HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_2);
HAL_DMA_Start_IT(htim2.hdma[TIM_DMA_ID_UPDATE], (uint32_t)&GPIOA->IDR, (uint32_t)&sRAM_frame_buffer[hsyncCount][640],640);
__HAL_TIM_ENABLE_DMA(&htim2, TIM_DMA_UPDATE);
if(hsyncCount<240)
{
hsyncCount++;
}
else
{
// APP_DBG_MSG("hsyncCount:%d \n",hsyncCount);
// HAL_NVIC_DisableIRQ(EXTI1_IRQn);
// HAL_NVIC_DisableIRQ(EXTI2_IRQn);
hsyncCount=0;
ble_flag=0;
UTIL_SEQ_SetTask(1<<CFG_TASK_SEND_DATA, CFG_SCH_PRIO_0);
}
}
else if((__HAL_GPIO_EXTI_GET_FLAG(GPIO_PIN_2))&&(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_2)==GPIO_PIN_RESET))
{
__HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_2);
HAL_DMA_Abort_IT(htim2.hdma[TIM_DMA_ID_UPDATE]);
__HAL_TIM_DISABLE_DMA(&htim2, TIM_DMA_UPDATE);
}
/* USER CODE END EXTI2_IRQn 1 */
}