feat:[stm32][can]: enhance control logic and refactor sendmsg#10898
feat:[stm32][can]: enhance control logic and refactor sendmsg#10898Rbb666 merged 1 commit intoRT-Thread:masterfrom
Conversation
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: bsp_stm32Reviewers: @Liang1795 @hamburger-os @wdfk-prog Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2025-11-13 10:56 CST)
📝 Review Instructions
|
There was a problem hiding this comment.
Pull Request Overview
This PR modifies the STM32 CAN driver to improve the CAN start/stop control flow and refactor the mailbox handling logic in the message send function.
Key Changes:
- Changed CAN stop behavior from
HAL_CAN_StoptoHAL_CAN_DeInitand added reconfiguration on CAN start - Refactored mailbox availability checking to use variables instead of duplicated switch cases
- Added automatic transmission abort when mailbox is busy instead of immediately returning error
|
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
当前的 stm32 CAN 驱动 (
drv_can.c) 存在两个潜在问题:rt_device_control接口,通过RT_CAN_CMD_START命令先关闭 CAN 设备再重新打开时,CAN 设备可能无法正常重新启动和工作。你的解决方案是什么 (what is your solution)
HAL_CAN_Stop()修改为HAL_CAN_DeInit()。DeInit会彻底复位 CAN 外设状态。作为对应,在重新打开设备时,在调用HAL_CAN_Start()之前,先调用_can_config()函数,使用设备结构体中保存的配置来重新初始化 CAN 外设。请提供验证的bsp和config (provide the config and bsp)
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up