我正在尝试使用 CubeMX 代码生成器和 Windows 10 上的 uVision 5 IDE 对 STM32F446 进行编程,以便使用 CAN 总线。
我已经为 STM32-F446RE Nucleo 板配置了我的 CubeMX 项目。我将 PA12 配置为 CAN1TX,将 PA11 配置为 CAN1RX。STM32-F446RE Nucleo 板的其余引脚默认设置。我已经为 uVision 5 IDE 生成了代码。
首先,我尝试按照 stm32f4xx_hal_can.c 注释中的说明以及 HAL 文档 DocID025834 Rev 5 第 120 页上的说明来遵循有关如何使用 HAL 和驱动程序的说明。此页面提供以下说明:
- 使用 __HAL_RCC_CAN1_CLK_ENABLE() 为 CAN1 启用 CAN 控制器接口时钟,使用 __HAL_RCC_CAN2_CLK_ENABLE() 为 CAN2 和 __HAL_RCC_CAN3_CLK_ENABLE() 为 CAN3 如果您仅使用 CAN2,则必须启用 CAN1 时钟。
- CAN 引脚配置 **使用以下函数为 CAN GPIO 启用时钟:__GPIOx_CLK_ENABLE() ** .... 步骤 2 的第一个子步骤是问题所在。我找不到函数 __GPIOx_CLK_ENABLE()。我在其他一些论坛上注意到,该函数可能有另一个名称,__HAL_RCC_GPIOx_CLK_ENABLE(); 但它也不被 IDE 识别。我是否缺少包含文件?“x”是否应该替换为某个数字,例如我要使用的引脚的引脚号?如果是这样,pin应该用什么格式表示?
令我更加困惑的是,我查看了各种 youtube 视频,但似乎没有一个提到 HAL 手册中提到的上述步骤。
我在我的 IDE 上安装了以下内容,其中包括:通用:ARM::CMISS-Driver 版本 2.3.0 和 2.2.0,ARM::CMISS 版本 5.4.0 和版本 5.3.0。设备特定信息:Keil::STM32F4xx_DFP 版本 2.13.0。Keil::STM32NuceloBSP 版本 1.6.0。
我一直在寻找信息,但没有成功,非常感谢您的帮助。