昨天将师弟的电机底层can驱动代码移植到项目中,发现原本已经调好的can底层代码出现了bug:can只能发不能收了orz。。。
此处省略一万字。。。通过二分查找法,最终定位到出现bug的神秘代码如下:
#define ENABLE 0x11
#define DISABLE 0x12
直接find in files,好家伙,直接与f7的hal库函数一枚举变量重名
typedef enum
{
DISABLE = 0,
ENABLE = !DISABLE
} FunctionalState;
在stm32f7xx_hal_can.c中可以发现使用该枚举量的语句。。
修改用户层宏,成功fix了该bug。。结果表明,keil这种垃圾编译器,变量名还是不能瞎取,这应该属于一个warning?