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

[复制链接]
 楼主| 发表于 2025-6-22 08:52 | 显示全部楼层 |阅读模式
使用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。
发表于 2025-6-23 07:28 | 显示全部楼层
如果工程用的是 LL 库,就不会自动启用 HAL 的定义。
发表于 2025-6-23 07:28 | 显示全部楼层
CAN1 的定义应该在 stm32f1xx.h 里,估计是头文件没包含进去。
发表于 2025-6-23 07:29 | 显示全部楼层
有可能你配置完了没点生成代码,CubeIDE没刷新自动生成的代码。
发表于 2025-6-23 07:30 | 显示全部楼层
建议你点一下 Project -> Clean 然后重新生成,CubeIDE有时候卡住。
发表于 2025-6-23 07:31 | 显示全部楼层
打开 .ioc 文件确认一下 CAN 配置保存了没,别只是界面上勾了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

34

帖子

0

粉丝
快速回复 返回顶部 返回列表