工具/软件:
工程师(您好)。
我对 CAN 有疑问。
我写道 my_can.c 和 my_can.h 然后调用函数 my_can_init 、 my_can_receive 、和 my_can_transmit 中导出 main_cpu1.c 。
我还在中正确地声明了 MEMORY 和 SECTIONS 命令 文件、但如附件中所示、它仍然显示未分配内存。

如何解决此问题?
我正在连接 my_can.c 工程。
/*
* my_can.c
*
*创建日期:2025 年。 8.23.
*作者: 82102.
*/
#include “my_can.h"</s>“
//#包含“can.h"</s>“
#define TXCOUNT 100000
#define MSG_DATA_LENGTH 8.
#define TX_MSG_OBJ_ID 1
#define RX_MSG_OBJ_ID 1
#define TX_MSG_ID 0x100
#define RX_MSG_ID 0x100
取消 my_can_init();
vid my_can_transmit ();
vid my_can_receive ();
Volatile 无符号长整型 i;
Uint16_t txMsgData[8];
uint16_t rxMsgData[8];
// CAN 设置
取消 my_can_init ()
{
// GPIO_setPadConfig (70、GPIO_PIN_TYPE_PULLUP);//在 GPIO30 上启用上拉
// GPIO_setPinConfig (GPIO_70_CANA_RX);// GPIO30 = CANRXA
// GPIO_setPadConfig (71、GPIO_PIN_TYPE_PULLUP);//在 GPIO31 上启用上拉
// GPIO_setQualificationMode (71、GPIO_QUAL_ASYNC);//异步输入
// GPIO_setPinConfig (GPIO_71_CANA_TX);// GPIO31 = CANTXA
//-->初始化 CAN 控制器
can_initModule (cana_base);
//<--初始化 CAN 控制器
//<-将每个模块的 CAN 总线比特率设置为 500kbps
//有关如何设置的信息、请参阅驱动程序库用户指南
//更严格的时序控制。 此外、请查阅器件数据表
//有关 CAN 模块时钟的更多信息。
//
CAN_setBitRate (Cana_base、DEVICE_SYSCLK_FREQ、500000、16);
//-->初始化用于接收 CAN 消息的接收消息对象。
//可能的标志:can_msg_obj_no_flags、can_msg_obj_use_EXT_filter,
// can_msg_obj_use_DIR_FILTER
//初始化用于发送 CAN 消息的发送消息对象。
//消息对象参数:
// CAN 模块:a.
//消息对象标识号:1.
//消息标识符:55
//消息帧:标准
//消息类型:传输
//消息 ID 掩码:0x0
//消息对象标志:无
//消息数据长度:4 个字节
can_setupMessageObject (cana_base、TX_MSG_OBJ_ID、TX_MSG_ID、
CAN_MSG_FRAME_STD、CAN_MSG_OBJ_TYPE_TX、0、
CAN_MSG_OBJ_NO_FLAGS、MSG_DATA_LENGTH);
//-->初始化用于接收 CAN 消息的接收消息对象。
//消息对象参数:
// CAN 模块:b.
//消息对象标识号:1.
//消息标识符:33
//消息帧:标准
//消息类型:接收
//消息 ID 掩码:0x0
//消息对象标志:接收中断
//消息数据长度:4 个字节
//
can_setupMessageObject (cana_base、RX_MSG_OBJ_ID、RX_MSG_ID、
CAN_MSG_FRAME_STD、CAN_MSG_OBJ_TYPE_RX、0、
CAN_MSG_OBJ_NO_FLAGS、MSG_DATA_LENGTH);
//<--初始化要发送的发送消息对象数据缓冲区
txMsgData[0]= 0x12;
txMsgData[1]= 0x34;
txMsgData[2]= 0x56;
txMsgData[3]= 0x78;
//-->初始化要发送的发送消息对象数据缓冲区
//<--启动 CAN 模块 B 操作
can_startModule (cana_base);
//can_enableTestMode (cana_base、can_test_LBACK);
//-->启动 CAN 模块 B 操作
}
foid my_can_transmit ()
{
//-->用户代码
//使传输的消息数据中的值递增。
//
can_sendMessage (Cana_base、TX_MSG_OBJ_ID、MSG_DATA_LENGTH、txMsgData);
txMsgData[0]+= 0x01;
// txMsgData[1]+= 0x01;
// txMsgData[2]+= 0x01;
// txMsgData[3]+= 0x01;
//如果超过一个字节、则重置数据
//
if (txMsgData[0]> 0xFF)
{
txMsgData[0]= 0;
}
if (txMsgData[1]> 0xFF)
{
txMsgData[1]= 0;
}
if (txMsgData[2]> 0xFF)
{
txMsgData[2]= 0;
}
if (txMsgData[3]> 0xFF)
{
txMsgData[3]= 0;
}
//<--用户代码
}
foid my_can_receive ()
{
//获取收到的消息
//
can_readMessage (cana_base、RX_MSG_OBJ_ID、rxMsgData);
rxMsgCount ++;
}