HAL_GPIO_EXTI_Callback() not being triggered
I connected a external button on my PCB board and am trying to use it to toggle another GPIO Pin (PA8) with HAL_GPIO_EXTI_Callback()
I connected the button to PC4 on my NUCLEO board and is configured as follow:
/*Configure GPIO pin : PC4 */
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
In the User Code 4 Section:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_4){
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_8);
}
}
In stm32g0xx_it.c:
void EXTI4_15_IRQHandler(void)
{
/* USER CODE BEGIN EXTI4_15_IRQn 0 */
/* USER CODE END EXTI4_15_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); // PC4
HAL_GPIO_EXTI_IRQHandler(B1_Pin);
/* USER CODE BEGIN EXTI4_15_IRQn 1 */
/* USER CODE END EXTI4_15_IRQn 1 */
}What I dont understand is when I push the button using this configuration it works:
In main while-loop:
if(triggerDetected==1)
{
if((HAL_GetTick()-triggerTick)>debounceTime)
{
// Toggle relay (if energy units > 0)
if (units_left > 0.0f) {
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_8); // drives relay and D2
} else {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); // force off if no units
}
//Reset trigger
triggerDetected=0;
}
}In stm32g0xx_it.c:
void EXTI4_15_IRQHandler(void)
{
/* USER CODE BEGIN EXTI4_15_IRQn 0 */
triggerDetected = 1;
triggerTick = HAL_GetTick();
/* USER CODE END EXTI4_15_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); // PC4
HAL_GPIO_EXTI_IRQHandler(B1_Pin);
/* USER CODE BEGIN EXTI4_15_IRQn 1 */
/* USER CODE END EXTI4_15_IRQn 1 */
}When I handle the PC4 interrupt directly in the interrupt handler, PA8 toggles, but it doesn't work if i handle it in the callback function.
Any idea to fix this please?
