【CAN卡通信的下位机-STM32cubeIDE-hal库+STMF4xx+数据发送和接收+中断接收方式+基础样例3】
- 1、概述
- 2、实验环境
- 3、问题描述
- 4、大佬指点与解决问题
- 5、实验效果截图
- 6、代码连接
- 7、细节部分
- 8、总结
)
1、概述
从第一篇F1和F4上采用轮询的方式调试can,
【CAN卡通信的下位机-STM32cubeIDE-hal库+STMF1xx和STMF4xx+数据发送和接收+轮询接收方式+基础样例(1)】
到第二篇F4上采用中断方式,
【CAN卡通信的下位机-STM32cubeIDE-hal库+STMF4xx+数据发送和接收+中断接收方式+基础样例(2)】
F1上采用中断方式接收,已经过去两个多月,一直没能解决。
这次请到ST原厂大佬,现场帮忙调试,只能说不愧是原厂大佬吧。
2、实验环境
本次实验环境实是在两个环境下,如下,请根据自己的环境选择对应开发板。
(1)软件环境:STM32cubeIDE 1.8.0
(2)硬件芯片:STM32F103VET6(野火:指南者)
(3)其它硬件:j-link or st-link , 串口转usb转换器,can卡,开发板。
(4)特殊硬件:STM32F103VET6(野火:指南者)这款开发板,是没有can转换芯片的,所以我们自己需要弄一个,而STM32F407ZET6(正点原子:探索者)这款,是有的,可以不用外接,如下需要买的话,可以参照正点原子F4的can芯片SIT1050T,或者某宝淘一个类似的。
如下是我在某宝上购买的一种:
名称:「CAN转TTL模块TJA1050T芯片方案程序源码通讯转换 can通信驱动模块」
下图所示硬件截图
3、问题描述
最近开始调试时候,按照网上相关文章,配置STM32F1xx的can,并且加入相关代码后,发现无论如何就是不运行,后来使用STM32F4xx配置can,发现可以运行,F4类似的方式,去配置F1的can,还是收不到任何东西,后来在回调函数加入串口打印,发现死在了can中断里,如下图所示。
目前问题是:在hal库,软件STM32cubeIDE下,STM32F1的can无法出中断,也无法获得数据。
4、大佬指点与解决问题
假传万卷书,真传一句话。
如下图,因为模仿F4的写法,所以多了一个“&”符合,致使样例程序无法成功跑起来。
5、实验效果截图
如下图,再次下载后,也成功实现了中断接收情况。
6、代码连接
F1成功后代码链接:
https://download.csdn.net/download/qq_22146161/87913290
7、细节部分
(1)重新对比F4代码,发现F4确实有这个“&”符号,真的很神奇,这个问题说难,也难,确认一般人很难预料到这块。
8、总结
最后问题点在这,确实也没想到,自己确实也学习到了东西吧,当然自己也需要反省,一个小小的符合,引发这么大的问题,还是照搬学习F4成功之后的样例。
这样我想起《三体》中,一位面壁者所做的思想钢印,千万代码中,一个小小的符合,能让人的思维,完全产生相反的效果,从主战派到逃跑派。