汇集网友智慧,解决技术难题
AT32 CAN 邮箱 CAN通讯 发送 105
赞0
评论
2026-07-01
2026-06-26
2026-06-17
温室雏菊 发表于 2026-6-12 18:13 通常,您需要检查邮箱的状态位,如果状态位为0,则表示邮箱为空。
2026-06-12
2026-02-24
2025-11-06
2025-07-15
点击图片添加到编辑器内容中
点击文件名将附件添加到文章中
提交
tyw
323个答案
xch
308个答案
天意无罪
288个答案
dffzh
256个答案
jjjyufan
217个答案
coody
208个答案
LcwSwust
172个答案
地瓜patch
151个答案
赞0
读TSR 发送状态寄存器的 TME0/TME1/TME2 位(最常用)
标准库封装函数 CAN_GetTxMailboxEmpty()
评论
2026-07-01
赞0
{
if (CANx->tsts_bit.tm0ef)
{
return 1 ;
}
else if (CANx->tsts_bit.tm1ef)
{
return 1 ;
}
else if (CANx->tsts_bit.tm2ef)
{
return 1 ;
}
return 0 ;
}
评论
2026-06-26
赞0
评论
2026-06-17
赞0
是的,看标志位,其实和串口一样!
评论
2026-06-17
赞0
评论
2026-06-12
赞0
评论
2026-02-24
赞0
评论
2026-02-24
赞0
// 查询CAN发送邮箱是否为空
uint8_t CAN_TxMailboxIsEmpty(CAN_Type *CANx) {
// 检查发送邮箱空标志(三个邮箱任一为空则返回1)
return (CANx->TSR & (CAN_TSR_TME0 | CAN_TSR_TME1 | CAN_TSR_TME2)) ? 1 : 0;
}
// 使用示例
void CAN_SendExample(CAN_Type *CANx) {
if (CAN_TxMailboxIsEmpty(CANx)) {
// 邮箱为空,可发送数据
// ... 填充发送数据和标识符 ...
}
}
评论
2025-11-06
赞0
评论
2025-07-15
您需要登录后才可以回复 登录 | 注册