看了库函数发现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个邮箱任何一个邮箱数据发送完成后邮箱也变空,就进入中断????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>