Skip to main content
Associate III
December 10, 2025
Solved

No CAN TX interrupt

  • December 10, 2025
  • 1 reply
  • 299 views

I've attempted to get an interrupt when one of the three CAN transmit mailboxes empties. In MX:

avidroneg_0-1765403742178.png

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?

Best answer by Karl Yamashita

More than likely you didn't activate the notification

 

if (HAL_CAN_ActivateNotification(msg->hcan, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_TX_MAILBOX_EMPTY) != HAL_OK)
{
	Error_Handler();
}

 

 

1 reply

Karl Yamashita
Karl YamashitaBest answer
Principal
December 11, 2025

More than likely you didn't activate the notification

 

if (HAL_CAN_ActivateNotification(msg->hcan, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_TX_MAILBOX_EMPTY) != HAL_OK)
{
	Error_Handler();
}

 

 

If a reply has proven helpful, click on Accept as Solution so that it'll show at top of the post.CAN Jammer an open source CAN bus hacking toolCANableV3 Open Source