Jump to content
    

FreeRTOS+CAN=не срабатывает прерывание на передачу

"Запускатор" прерывания на передачу:

uint8_t CAN1_Put( CanTxMsg* TxMess )
{
   uint8_t xReturn;
   if( xQueueSend( CAN1_TX_xQueue, &TxMess, 10 ) == pdPASS )
      {
         xReturn = pdPASS;
         CAN_ITConfig(CAN1, CAN_IT_TME,  ENABLE);
      }
   else
      {
         xReturn = pdFAIL;
      }

   return xReturn;
}

Обработчик прерывания на передачу:

void CAN1_TX_IRQHandler (void)
{
   portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;

   if (CAN_GetITStatus(CAN1,CAN_IT_TME)==SET)
      {
         CAN_ClearITPendingBit(CAN1,CAN_IT_TME);
         if( xQueueReceiveFromISR( CAN1_TX_xQueue, &TxMessage, &xHigherPriorityTaskWoken ) == pdTRUE )
            {
               CAN_Transmit(CAN1, &TxMessage);
            }
         else
            {
               CAN_ITConfig(CAN1, CAN_IT_TME,  DISABLE);
            }
      }
   portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
}

Собственно, вопрос, что я делаю не так? НЕ заходит в обработчик прерывания по передаче.

UPD. Физика КАНа работоспособная, на шине два устройства, если без прерыаний, то сообщения отправляются и получатель получает (прерывание на приём срабатывает).

Edited by Volldemar

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...