cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7 UART8 interrupt not working

danelifab
Associate II

Hi everyone, I'm using a Riverdi board (STM32 10.1" Rev. 1.2) with an STM32H747XIH6, and I'm having trouble with the UART8 in single-wire mode. I can't get the interrupt callback function to be called when data is received on that port.

This board uses TouchGfx and FreeRTOS.

I'm using a test interrupt code just for the UART8, but it's not responding.

If I use the blocking function HAL_UART_Receive(...), I receive consistent data, so I don't think it's a wiring or pinout issue. 

I have checked that the signal is coming in with the oscilloscope.

I have the global interrupt enabled for the UART8.

The code I'm using is this, in freertos.c

void startUartTask(void *argument)
{
  /* USER CODE BEGIN startUartTask */
	memset(rxBuffer, 65, 128);
	HAL_HalfDuplex_EnableReceiver(&huart8);
	HAL_UARTEx_ReceiveToIdle_IT(&huart8, rxBuffer, 64);

	/* Infinite loop */
	for(;;)
	{
		//HAL_UART_Receive(&huart8, rxBuffer, 128, 120);
		osDelay(10);
	}
  /* USER CODE END startUartTask */
}

 

In main.c

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
	HAL_UARTEx_ReceiveToIdle_IT(&huart8, rxBuffer, 128);
}

 

I have enabled the interrupt in CubeMX for UART8 and pin J8 (UART8 TX) is configured as pullup but the callback is never called.

The task starts normally and runs.

I don't understand what's going wrong, any ideas?

 

Thanks

 

 

 

 
1 REPLY 1

Check startup_stm32h747xx.s for UART8_IRQHandler, confirm build and linkage.

Check UART8_IRQHandler code and that it is a) reached, and b) calls into the HAL infrastructure.

Check HAL_UARTEx_RxEventCallback() is entering with huart handle pointing at your huart8 structure, verify, don't assume.

Check NVIC side configuration/recognition

Check UART8 a register level

 

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..