为什么如果我启用CAN1,默认情况下没有定义
使用STM32 CubeIDE。在HAL文件中,为什么#if defined(CAN1)存在,我启用CAN1,默认情况下没有定义。很奇怪
是不是你没勾选 CAN 外设?CubeMX里启用不等于定义宏哦。 CAN1 是外设寄存器的基址宏吧,得靠头文件里启用才行。 可能你没有加 #include "stm32f1xx_hal_can.h",头文件里才有宏定义。 我也遇到过,后来发现需要启用 HAL_CAN_MODULE 开关,不然编译器不带上相关代码。 你看下 stm32f1xx_hal_conf.h 里有没有定义 HAL_CAN_MODULE_ENABLED。 如果工程用的是 LL 库,就不会自动启用 HAL 的定义。 CAN1 的定义应该在 stm32f1xx.h 里,估计是头文件没包含进去。 有可能你配置完了没点生成代码,CubeIDE没刷新自动生成的代码。 建议你点一下 Project -> Clean 然后重新生成,CubeIDE有时候卡住。 打开 .ioc 文件确认一下 CAN 配置保存了没,别只是界面上勾了。
页:
[1]