|
在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); } } |
楼主,你好。为什么要在中断中加延时处理呢?这样会导致其他的中断不能正常工作。在外部判断超时处理,再发送数据。中断中,尽量减少延时、太繁琐的代码。中断要简洁明了。
看起来这在CAN接收中断里,然后判断是否延时没收到信息,逻辑不通呀~~。 楼主再查查看