久芯网

当STM32CAN接收超时发出一个错误报文的功能实现问题

avatar mike_cow 提问时间: 2023-08-13 19:42:30 / 未解决

STM32的CAN收发通信中,当接收超时(即在限定的时间内仍然没有接收到数据),发出一个报文的功能,查询pending的返回值,为什么不能实现这个功能?超时没有接收也没能发出。

void USB_LP_CAN_RX0_IRQHandler1(void)

{

if((CAN_MessagePending(CAN1,CAN_FIFO0)==0) { Delay1(10000000); can_tx1(0X29,0X11,0X00,0X00,0X00,0X00,0X00,0X00); } }

2个回答
  • avatar 废鱼
    回答时间: 2023-08-13 20:07:46

    楼主,你好。为什么要在中断中加延时处理呢?这样会导致其他的中断不能正常工作。在外部判断超时处理,再发送数据。中断中,尽量减少延时、太繁琐的代码。中断要简洁明了。

  • avatar butterflyspring
    回答时间: 2023-08-13 20:34:08

    看起来这在CAN接收中断里,然后判断是否延时没收到信息,逻辑不通呀~~。 楼主再查查看

会员中心 微信客服
客服
回到顶部