- 打卡等级:以坛为家II
- 打卡总天数:464
- 最近打卡:2025-08-23 05:55:54
金牌会员
- 积分
- 1531
|
发表于 2025-7-30 15:41:15
|
显示全部楼层
问题解决了,是我的一个设置错误,在结构体
typedef struct
{
u8 DLC:4; //数据长度, bit0~bit3
u8 :2; //空数据, bit4~bit5
u8 RTR:1; //帧类型, bit6
u8 FF:1; //帧格式, bit7
u32 ID; //CAN ID
u8 DataBuffer[2]; //数据缓存
}CAN_DataDef;
定义时,u8 DataBuffer[2]; 定义CAN的数据长度,STC32G有2个CAN口,我暂时只用了CAN1,数据长度是2,所以这里我设为了2,
CAN2暂时还没有用,但是将来用的时候,数据长度是8,我忽视了。CAN2的数据变量也用CAN_DataDef声明了,8个数据变量也赋了初值,这样算是内存溢出了。
在定义 u8 DataBuffer[2]; //数据缓存时,DataBuffer[2]改为DataBuffer[8]即可。
|
|