完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近要在STM32F476NG上启用CAN通信功能,板子上有两路CAN ;在使用CAN1的时候跑CAN_Loopback例程收发测试正常通过,但是CAN2在跑CAN_Loopback例程时,发送可以通过,无法接收;同样在跑CAN_Networking例程CAN2同样也是无法接收到数据,个人感觉是CAN2的设置有什么特别的要求,查看了数据手册也没有发现特别的地方,有没有跟我一样遇到相同问题的啊?大神求帮助啊!!!!!!!!!!!!!!!!!!!!!! void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef *CanHandle) { if ((CanHandle->pRxMsg->StdId == 0x321) && (CanHandle->pRxMsg->IDE == CAN_ID_STD) && (CanHandle->pRxMsg->DLC == 2)) { LED_Display(CanHandle->pRxMsg->Data[0]); ubKeyNumber = CanHandle->pRxMsg->Data[0]; } /* Receive */ if (HAL_CAN_Receive_IT(CanHandle, CAN_FIFO0) != HAL_OK) { /* Reception Error */ Error_Handler(); } } 可以进接收中断,可是只能进一次。。。。。。。 这个接收中断不需要清除标志位什么的吗》》? 使用CAN2时 1、__HAL_RCC_CAN1_CLK_ENABLE(); 使能CAN1的时钟 2、将 sFilterConfig.FilterNumber = 14; |
|
相关推荐
9个回答
|
|
|
|
难道大家都不使用CAN了吗》》???
|
|
|
|
自己尝试了一下,使用CAN2时
1、__HAL_RCC_CAN1_CLK_ENABLE(); 使能CAN1的时钟 2、将 sFilterConfig.FilterNumber = 14; 经过这两步使用CAN2跑CAN_Loopback例程可以通过了,但是跑CAN_Networking例程CAN2还是无法接收到数据 |
|
|
|
楼主看一下CAN2的初始化配置是否正确,既然loopback模式下可以收发,应该还是配置的问题。可以看一下总线上是否有波形。
|
|
|
|
可以进接收中断,可是只能进一次。。。。。。。 这个接收中断不需要清除标志位什么的吗》》? |
|
|
|
进入以后,楼主看一下中断标志位,应该是关闭了。需要重新开一下。
|
|
|
|
问题解决了,在中断中调试时,误将延时函数拷贝进去了,删除就没问题了 |
|
|
|
初始化一下CAN1就可以用CAN2
|
|
|
|
顶-------------
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 13:17 , Processed in 0.878611 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号