📄 can_fw.c
字号:
/*
*********************************************************************************************************
* Filename : CAN_FW.C
* Programmer : Haven
* 描述: CAN通信程序
* DATE: 2007.11.18
****************************************************************************************
*/
#define CAN_GLOBALS
#include "..\includes\includes.H"
CAN_MSG CAN1TxMsg;
CAN_MSG CAN2TxMsg; // TX and RX Buffers for CAN message
CAN_MSG CAN1RxMsg;
CAN_MSG CAN2RxMsg; // TX and RX Buffers for CAN message
/******************************************************************************
** Function name: CAN_MSG CANGetRxMsg (INT8U ch)
** Descriptions: 从CAN接收缓冲区读出数据
** parameters: ch 通道
** Returned value: 读出数据(CANFRAME结构)
******************************************************************************/
CANFRAME CANGetRxMsg (INT8U ch)
{
CANFRAME rxmsg;
CAN_MSG msg;
switch(ch){
case CAN1:
OS_ENTER_CRITICAL();
msg = CAN1RxMsg;
OS_EXIT_CRITICAL();
break;
case CAN2:
OS_ENTER_CRITICAL();
msg = CAN2RxMsg;
OS_EXIT_CRITICAL();
break;
}
rxmsg.len = (INT8U)((msg.Frame>>16)&0x0000003f);
rxmsg.id = msg.MsgID;
rxmsg.CANBuf.CANDataAB[0] = msg.DataA;
rxmsg.CANBuf.CANDataAB[1] = msg.DataB;
return rxmsg;
}
/******************************************************************************
** Function name: CAN_MSG CANGetRxMsg (INT8U ch)
** Descriptions: 向CAN发送数据
** parameters: 1、ch 通道, CAN1,CAN2
2、txmsg 要发送的数据指针 包括: 标识符 11位 长度<=8 数据
** Returned value: 无
******************************************************************************/
void CANPutTxMsg (INT8U ch,CANFRAME *txmsg)
{
switch(ch){
case CAN1:
CAN1TxMsg.Frame = (INT32U)(txmsg->len << 16);//如果是29位ID,把最高位置1
CAN1TxMsg.MsgID = txmsg->id;
CAN1TxMsg.DataA = txmsg->CANBuf.CANDataAB[0];
CAN1TxMsg.DataB = txmsg->CANBuf.CANDataAB[1];
break;
case CAN2:
CAN2TxMsg.Frame = (INT32U)(txmsg->len << 16);//如果是29位ID,把最高位置1
CAN2TxMsg.MsgID = txmsg->id;
CAN2TxMsg.DataA = txmsg->CANBuf.CANDataAB[0];
CAN2TxMsg.DataB = txmsg->CANBuf.CANDataAB[1];
break;
}
//while ( !(CAN1GSR & (1 << 3)) );//检测是否有一发送请求没有完成
CANSendMessage(ch);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -