Skip to content

Conversation

@CYFS3
Copy link
Contributor

@CYFS3 CYFS3 commented Oct 12, 2025

拉取/合并请求描述:(PR description)

[

为什么提交这份PR (why to submit this PR)

为GD32F5适配can 不阻塞发送

你的解决方案是什么 (what is your solution)

image

请提供验证的bsp和config (provide the config and bsp)

  • BSP:
  • .config:
  • action:

]

当前拉取/合并请求的状态 Intent for your PR

必须选择一项 Choose one (Mandatory):

  • 本拉取/合并请求是一个草稿版本 This PR is for a code-review and is intended to get feedback
  • 本拉取/合并请求是一个成熟版本 This PR is mature, and ready to be integrated into the repo

代码质量 Code Quality:

我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:

  • 已经仔细查看过代码改动的对比 Already check the difference between PR and old code
  • 代码风格正确,包括缩进空格,命名及其他风格 Style guide is adhered to, including spacing, naming and other styles
  • 没有垃圾代码,代码尽量精简,不包含#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up
  • 所有变更均有原因及合理的,并且不会影响到其他软件组件代码或BSP All modifications are justified and not affect other components or BSP
  • 对难懂代码均提供对应的注释 I've commented appropriately where code is tricky
  • 代码是高质量的 Code in this PR is of high quality
  • 已经使用formatting 等源码格式化工具确保格式符合RT-Thread代码规范 This PR complies with RT-Thread code specification
  • 如果是新增bsp, 已经添加ci检查到.github/ALL_BSP_COMPILE.json 详细请参考链接BSP自查

@CYFS3 CYFS3 requested a review from kurisaW as a code owner October 12, 2025 12:38
@github-actions
Copy link

👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread!

为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。
To ensure your code complies with RT-Thread's coding style, please run the code formatting workflow by following the steps below (If the formatting of CI fails to run).


🛠 操作步骤 | Steps

  1. 前往 Actions 页面 | Go to the Actions page
    点击进入工作流 → | Click to open workflow →

  2. 点击 Run workflow | Click Run workflow

  • 设置需排除的文件/目录(目录请以"/"结尾)
    Set files/directories to exclude (directories should end with "/")
  • 将目标分支设置为 \ Set the target branch to:gd32_can
  • 设置PR number为 \ Set the PR number to:10796
  1. 等待工作流完成 | Wait for the workflow to complete
    格式化后的代码将自动推送至你的分支。
    The formatted code will be automatically pushed to your branch.

完成后,提交将自动更新至 gd32_can 分支,关联的 Pull Request 也会同步更新。
Once completed, commits will be pushed to the gd32_can branch automatically, and the related Pull Request will be updated.

如有问题欢迎联系我们,再次感谢您的贡献!💐
If you have any questions, feel free to reach out. Thanks again for your contribution!

@github-actions github-actions bot added BSP BSP: GD32 BSP related with GD32 labels Oct 12, 2025
}
return freebox;
}
rt_ssize_t _can_sendmsg_nonblocking(struct rt_can_device *can, const void *buf)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不同函数后需要加一个换行

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不同函数后需要加一个换行

已修改

return RT_EOK;
}


Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

删除一个换行

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

删除一个换行

已经修改

@Rbb666 Rbb666 requested a review from Copilot October 13, 2025 02:45
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements a non-blocking send mechanism for CAN devices on GD32F5 platforms. The implementation allows CAN message transmission without blocking when transmit mailboxes are full.

  • Adds a helper function to check available transmit mailboxes
  • Implements non-blocking message transmission with immediate failure when no mailboxes are available
  • Integrates the new functionality into the CAN operations structure

Comment on lines 668 to 676
if (CAN_STAT(can_x) & CAN_TSTAT_TME0 != 0U)
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME1 != 0U)
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME2 != 0U)
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Operator precedence issue / 运算符优先级问题: The bitwise AND operation has lower precedence than the inequality comparison. This will evaluate as CAN_STAT(can_x) & (CAN_TSTAT_TME0 != 0U) which is incorrect. Add parentheses around the bitwise operation. / 按位与运算符的优先级低于不等比较运算符。这会被计算为 CAN_STAT(can_x) & (CAN_TSTAT_TME0 != 0U),这是错误的。需要在按位运算周围添加括号。

Suggested change
if (CAN_STAT(can_x) & CAN_TSTAT_TME0 != 0U)
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME1 != 0U)
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME2 != 0U)
if ((CAN_STAT(can_x) & CAN_TSTAT_TME0) != 0U)
{
freebox++;
}
if ((CAN_STAT(can_x) & CAN_TSTAT_TME1) != 0U)
{
freebox++;
}
if ((CAN_STAT(can_x) & CAN_TSTAT_TME2) != 0U)

Copilot uses AI. Check for mistakes.
Comment on lines 668 to 676
if (CAN_STAT(can_x) & CAN_TSTAT_TME0 != 0U)
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME1 != 0U)
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME2 != 0U)
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Operator precedence issue / 运算符优先级问题: Same operator precedence issue as above. Add parentheses around the bitwise operation: (CAN_STAT(can_x) & CAN_TSTAT_TME1) != 0U. / 与上面相同的运算符优先级问题。需要在按位运算周围添加括号:(CAN_STAT(can_x) & CAN_TSTAT_TME1) != 0U

Suggested change
if (CAN_STAT(can_x) & CAN_TSTAT_TME0 != 0U)
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME1 != 0U)
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME2 != 0U)
if ((CAN_STAT(can_x) & CAN_TSTAT_TME0) != 0U)
{
freebox++;
}
if ((CAN_STAT(can_x) & CAN_TSTAT_TME1) != 0U)
{
freebox++;
}
if ((CAN_STAT(can_x) & CAN_TSTAT_TME2) != 0U)

Copilot uses AI. Check for mistakes.
{
freebox++;
}
if (CAN_STAT(can_x) & CAN_TSTAT_TME2 != 0U)
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Operator precedence issue / 运算符优先级问题: Same operator precedence issue as above. Add parentheses around the bitwise operation: (CAN_STAT(can_x) & CAN_TSTAT_TME2) != 0U. / 与上面相同的运算符优先级问题。需要在按位运算周围添加括号:(CAN_STAT(can_x) & CAN_TSTAT_TME2) != 0U

Suggested change
if (CAN_STAT(can_x) & CAN_TSTAT_TME2 != 0U)
if ((CAN_STAT(can_x) & CAN_TSTAT_TME2) != 0U)

Copilot uses AI. Check for mistakes.
{
RT_ASSERT(can);

can_trasnmit_message_struct transmit_message;
Copy link

Copilot AI Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in variable type / 变量类型拼写错误: The type name contains a typo. It should be can_transmit_message_struct instead of can_trasnmit_message_struct. / 类型名称包含拼写错误,应该是 can_transmit_message_struct 而不是 can_trasnmit_message_struct

Suggested change
can_trasnmit_message_struct transmit_message;
can_transmit_message_struct transmit_message;

Copilot uses AI. Check for mistakes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个也修改下吧,很有用

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个也修改下吧,很有用

这个copilot好像review还是旧的代码,然后你指的修改是
PixPin_2025-10-13_15-05-03
zhegm这个吗,这个gd32的库名字就是这个了,如果修改的话就跟库不匹配了

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

官方的编码规范问题,出现过很多次了,需要注意下其他系列是不是也有这个问题,然后从rtt的软件包中统一一下命名

@Rbb666 Rbb666 added this to the v5.2.2 milestone Oct 13, 2025
@CYFS3 CYFS3 requested a review from Rbb666 October 13, 2025 03:51
@Rbb666 Rbb666 merged commit a3cc233 into RT-Thread:master Oct 13, 2025
28 checks passed
@CYFS3 CYFS3 deleted the gd32_can branch October 14, 2025 07:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BSP: GD32 BSP related with GD32 BSP

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants