完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现在找到的解决办法就是加延时,延时一段时间后去读自己从fifo中读取的数据,下面是我的扫描从can的程序,以及接受中断的程序
CAN1_Send_Msg(CAN2_DATA,8,0x0111);//扫描从机CAN1 delay_ms(10); if(can1_num>0) { printf("%d",can1_num); RS232_1_Send_Data(can1_buf,48); can1_num=0; } delay_ms(1);//两次扫描之间要加延时,要不然会出错 CAN1_Send_Msg(CAN3_DATA,8,0x0112);//扫描从机CAN2 delay_ms(1); if(can1_num>0) { printf("%d",can1_num); RS232_1_Send_Data(can1_buf,24); can1_num=0; } 接受中断程序: void CAN1_RX0_IRQHandler(void) { CanRxMsg RxMessage; u8 i=0; can1_num++; CAN_Receive(CAN1, 0, &RxMessage); for(i=0;i<8;i++) { can1_buf[(can1_num-1)*8+i] = RxMessage.Data[i]; } CAN1_ID=RxMessage.StdId; can1_rec_flag = 1; CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0); /* 清除挂起中断 */ // CAN_FIFORelease(CAN1,CAN_FIFO0 ); // printf("rxbuf[%d]:%drn",i,RxMessage.Data[i]); } |
|
|
|
路过。。。。挣点积分。。。
|
|
|
|
这个问题也困扰我好久了
|
|
|
|
程序优化的话,发送也可以使用中断
|
|
|
|
支持学习了!!!!!!!!!!!
|
|
|
|
支持,正要学习这个啊。can很热门
|
|
|
|
|
|
|
|
路过。。。。挣点积分。。。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2255 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2071 浏览 3 评论
4687 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2215 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2757 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 04:38 , Processed in 0.599932 second(s), Total 61, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号