CAN总线的发送中断问题

2019-08-20 17:22发布

看了库函数发现can总线发送中断只有:#define         CAN_IT_TME      /*!< Transmit mailbox empty Interrupt(邮箱为空就中断)*/
/* Flags named as Interrupts : kept only for FW compatibility */
#define CAN_IT_RQCP0   CAN_IT_TME
#define CAN_IT_RQCP1   CAN_IT_TME
#define CAN_IT_RQCP2   CAN_IT_TME   /*详见3.5版本库函数。stmf10x_can.h头文件第505行!*/

现在又两种发送中断的定义方法:
--------------------------------one-------------------------
void USB_HP_CAN1_TX_IRQHandler (void) 
{
 if (CAN1->TSR & CAN_TSR_RQCP0) 
{                 
    CAN1->TSR |= CAN_TSR_RQCP0;                 
    CAN1_TXReady = TRUE;             
}

if (CAN1->TSR & CAN_TSR_TXOK1) 
{                 
CAN1->TSR |= CAN_TSR_RQCP1; 
CAN1_TXReady = TRUE;            
}
if(CAN1_SuccessFig ==ture)
CAN_SEND();
}
-------------------------------------TWO-------------------
void USB_HP_CAN1_TX_IRQHandler (void) 
{
/* 清楚中断 */
if (CAN1->TSR & CAN_TSR_RQCP0) 
{                 
CAN1->TSR |= CAN_TSR_RQCP0;                 
CAN1_TXReady = TRUE;             
}

if (CAN1->TSR & CAN_TSR_RQCP1
{                 
CAN1->TSR |= CAN_TSR_RQCP1
CAN1_TXReady = TRUE;            
}
if(CAN1_SuccessFig ==ture)
CAN_SEND();
}


以上中断函数只是判断0和1邮箱,2号邮箱可以类推,问一下对不对??

好像原子哥没有用到发送中断 都只是判断邮箱状态。初学者描述不对地方请谅解!!对这个中断有些困惑
个人理解:只要邮箱为空是不是就进入中断?还有3个邮箱任何一个邮箱数据发送完成后邮箱也变空,就进入中断????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。