单片机/MCU论坛
直播中

张娟

7年用户 2017经验值
私信 关注

MCU怎样判断CAN发送状态?

MCU怎样判断CAN 发送状态。
1、使能发送状态

if ((CAN_1_INT_SR_REG   CAN_1_TX_MESSAGE_MASK) != 0u)
{
  CANDirve_OnMsgTXIsr();
}
如此配置发现在一帧报文发送完了后,不能进入can的发送中断,
2、能有别的标志位来判断can报文的发送吗,不是太想用发送中断
                                                                                                                                                                                                                                                                                                                                                                                                

回帖(1)

李红梅

2024-2-18 15:57:11
从配置看不出有问题。按照你的配置,使能能 Message Trasmitted 你需要注意一下几点:
调用 CAN_Start() 之后调用如下 code 将 CAN 中断指向你声明的中断函数 ISR_CAN
/* Set CAN interrupt handler to local routine */
CyIntSetVector(CAN_Rx_ISR_NUMBER, ISR_CAN);
在中断函数中你需要清中断,也就是向中断状态寄存器的相应为写 1 来清楚该 bit, 示例如下(示例是 RX 中断,TX中断类似)
CY_ISR(ISR_CAN)
{
/* Clears Receive Message flag */
CAN_Rx_INT_SR_REG = CAN_Rx_RX_MESSAGE_MASK;
/* Switches status message received */
if ((CAN_Rx_BUF_SR_REG   CAN_RX_MAILBOX_0_SHIFT) != 0u)
{
receiveMailboxNumber = CAN_Rx_RX_MAILBOX_Button;
/* Acknowledges the receipt of a new message */
CAN_Rx_RX_ACK_MESSAGE(CAN_Rx_RX_MAILBOX_Button);
}
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分