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个邮箱任何一个邮箱数据发送完成后邮箱也变空,就进入中断????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-08-20 18:55
帮顶....
bingge191
2楼-- · 2019-08-20 22:57
回复【2楼】正点原子:
---------------------------------
怎么原子哥每次都帮顶啊??~~~~(>_<)~~~~  是不是我提的问题太弱智啊?还是没有说明白啊??
正点原子
3楼-- · 2019-08-20 23:28
回复【3楼】bingge191:
---------------------------------
我也不太熟,呵呵.

一周热门 更多>