Почему-то никто не упомянул про callback функции включенные почти
во все HAL обработчики прерываний, которые вам сгенерит Куб, стоит
только заказать нужные прерывания. Например:
/**
* @brief Rx Transfer completed callback.
* @param huart UART handle.
* @retval None
*/
__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(huart);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UART_RxCpltCallback can be implemented in the user file.
*/
}
Пишем свою функцию __weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{ }
Но без "ослабителя" __weak. В main.c. Радуемся. Главное, что халовский обработчик сделает всю рутину сам. А там оччень дохрена всяких нюансов. Это ARM.