2025-12-10 1:58 PM
I've attempted to get an interrupt when one of the three CAN transmit mailboxes empties. In MX:
It generated:
/* CAN interrupt Init */
HAL_NVIC_SetPriority(CAN_TX_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(CAN_TX_IRQn);
HAL_NVIC_SetPriority(CAN_RX0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(CAN_RX0_IRQn);
HAL_NVIC_SetPriority(CAN_RX1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(CAN_RX1_IRQn);
HAL_NVIC_SetPriority(CAN_SCE_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(CAN_SCE_IRQn);
I am using the HAL method HAL_CAN_AddTxMessage. This method seems to be working because I see CAN data on the wire. However, I never get an interrupt. I have a breakpoint on this function:
void CAN_TX_IRQHandler(void)
{
/* USER CODE BEGIN CAN_TX_IRQn 0 */
/* USER CODE END CAN_TX_IRQn 0 */
HAL_CAN_IRQHandler(&hcan);
/* USER CODE BEGIN CAN_TX_IRQn 1 */
/* USER CODE END CAN_TX_IRQn 1 */
}
and it never gets there. Why might this be?