WHALEE 发表于 2025-6-22 08:52

为什么如果我启用CAN1,默认情况下没有定义

使用STM32 CubeIDE。在HAL文件中,为什么#if defined(CAN1)存在,我启用CAN1,默认情况下没有定义。
很奇怪

公羊子丹 发表于 2025-6-23 07:23

是不是你没勾选 CAN 外设?CubeMX里启用不等于定义宏哦。

周半梅 发表于 2025-6-23 07:24

CAN1 是外设寄存器的基址宏吧,得靠头文件里启用才行。

帛灿灿 发表于 2025-6-23 07:25

可能你没有加 #include "stm32f1xx_hal_can.h",头文件里才有宏定义。

童雨竹 发表于 2025-6-23 07:26

我也遇到过,后来发现需要启用 HAL_CAN_MODULE 开关,不然编译器不带上相关代码。

万图 发表于 2025-6-23 07:27

你看下 stm32f1xx_hal_conf.h 里有没有定义 HAL_CAN_MODULE_ENABLED。

Wordsworth 发表于 2025-6-23 07:28

如果工程用的是 LL 库,就不会自动启用 HAL 的定义。

Bblythe 发表于 2025-6-23 07:28

CAN1 的定义应该在 stm32f1xx.h 里,估计是头文件没包含进去。

Pulitzer 发表于 2025-6-23 07:29

有可能你配置完了没点生成代码,CubeIDE没刷新自动生成的代码。

Uriah 发表于 2025-6-23 07:30

建议你点一下 Project -> Clean 然后重新生成,CubeIDE有时候卡住。

Clyde011 发表于 2025-6-23 07:31

打开 .ioc 文件确认一下 CAN 配置保存了没,别只是界面上勾了。
页: [1]
查看完整版本: 为什么如果我启用CAN1,默认情况下没有定义