📄 iar-
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name: CANRcv_snd.c
** Last modified Date: 2007.01.18
** Last Version: 1.0
** Description: CAN 通信程序
**
**--------------------------------------------------------------------------------------------------------
** Created By: 曾维勇
** Created date: 2007.09.16
** Version: 1.0
** Descriptions: The original version 初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by: Ni Likao 倪力考
** Modified date: 2007.11.02
** Version: 1.1
** Description: The second version 第二版
**
*********************************************************************************************************/
#ifndef _MY_CAN_
#define _MY_CAN_
#ifdef __cplusplus
extern "C"
{
#endif
/*********************************************************************************************************
定义CAN数据收发缓冲区标识符
*********************************************************************************************************/
#define FULL 2
#define EMPTY 3
#define NOT_FULL 4
#define NOT_EMPTY 5
/*********************************************************************************************************
定义验收过滤验收方式
*********************************************************************************************************/
#define EXT_ID_FILTER 1
#define STD_ID_FILTER 3
#define UNMASK 0x00000000
#define MASK 0x1FFFFFFF
/*********************************************************************************************************
定义接收、发送MsgObj
*********************************************************************************************************/
#define RxMsgObj_ONE 31
#define TxMsgObj_ONE 1
/*********************************************************************************************************
波特率宏定义
*********************************************************************************************************/
#define CANBAUD_1M 0
#define CANBAUD_500K 1
#define CANBAUD_250K 2
#define CANBAUD_125K 3
#define CANBAUD_100k 4
#define CANBAUD_50k 5
#define CANBAUD_25k 6
#define CANBAUD_20k 7
#define CANBAUD_10k 8
#define CANBAUD_5k 9
#define CANBAUD_2k5 10
/*********************************************************************************************************
宏定义CAN报文缓冲区长度
*********************************************************************************************************/
#define CAN_MAX_Buffer 10
/*********************************************************************************************************
定义CAN报文结构体
*********************************************************************************************************/
typedef struct _tCANFrame {
unsigned char ucXID; /* 0 标准帧;1 扩展帧 */
unsigned char ucDLC; /* 数据场长度 */
unsigned long ulID; /* CAN报文ID */
unsigned char ucDatBuf[8]; /* 报文数据场 */
}tCANFrame;
/*********************************************************************************************************
定义CAN接收、发送数据缓冲区
*********************************************************************************************************/
typedef struct _tCANFrameBuf {
unsigned char ucBufEmpty; /* 缓冲区为空标识 */
unsigned char ucBufFull; /* 缓冲区满标识 */
unsigned char ucSize;
unsigned char ucWrite;
unsigned char ucRead;
tCANFrame Buffer[CAN_MAX_Buffer]; /* 数据场缓冲区 */
}tCANFrameBuff;
/*********************************************************************************************************
定义CAN节点结构体
*********************************************************************************************************/
typedef struct _tCANNodeInfo {
unsigned long ulChNr;
unsigned char ucBADVal;
unsigned long ulRxMsgObjNr;
unsigned long ulTxMsgObjNr;
tCANFrameBuff *pReceFrameBuff;
tCANFrameBuff *pSendFrameBuff;
}tCANNodeInfo;
/*********************************************************************************************************
** Function name: CreateCAN
** Descriptions: 创建一个节点信息结构体
** input parameters: *pCAN 指向节点结构的空指针
** ulChannelNr 节点通道号
** ulBaud 节点通信波特率
** ulRxMsgObj 节点接收数据MO
** ulTxMsgObj 节点发送数据MO
** *pReceBuff 节点接收数据缓冲区
** *pSendBuff 节点发送数据缓冲区
** output parameters: 无
** Returned value: 无
** Created By: 曾维勇
** Created date: 2007.09.16
**--------------------------------------------------------------------------------------------------------
** Modified by: Ni Likao 倪力考
** Modified date: 2007.11.02
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
extern void CreateCAN (void *pCAN, unsigned long ulChannelNr, unsigned char ulBaud, unsigned long ulRxMsgObj,
unsigned long ulTxMsgObj, tCANFrameBuff *pReceBuff, tCANFrameBuff *pSendBuff);
/*********************************************************************************************************
** Function name: CAN_ucWriteBuffer
** Descriptions: 写帧接收缓冲区
** input parameters: *pBuf 指向接收缓冲区的指针
** *pWrite 写数据块指针
** output parameters: 无
** Returned value: FULL, 缓冲区已满
** NOT_FULL 缓冲区未满
** Created By: 曾维勇
** Created date: 2007.09.16
**--------------------------------------------------------------------------------------------------------
** Modified by: Ni Likao 倪力考
** Modified date: 2007.11.02
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
extern unsigned char CAN_ucWriteBuffer (void *pBuf, void *pWrite);
/*********************************************************************************************************
** Function name: CAN_ucReadBuffer
** Descriptions: 读数据缓冲区
** input parameters: *pBuf 指向数据缓冲区指针
** *pRead 读数据块指针
** output parameters: 无
** Returned value: EMPTY , 缓冲区为空
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -