📄 canfunc.h
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
** http://www.zlgmcu.com
**-----------------------------------------------------------文件信息--------------------------------------------------------------------------------
** 文 件 名: CANFUNC.H
** 版 本: v1.0
** 日 期: 2004年2月23日
** 描 述: CAN模块功能操作函数定义头文件
********************************************************************************************************/
#ifndef _CANFUNC_H_
#define _CANFUNC_H_
//函数、变量定位方式定义
#ifndef _CANFUNC_GLOBAL_
#define CANFUNC_GLOBAL extern
#else
#define CANFUNC_GLOBAL
#endif
//应用常量定义
CANFUNC_GLOBAL const INT32U USE_LOM_CAN[CAN_MAX_NUM];
CANFUNC_GLOBAL const INT32U USE_EWL_CAN[CAN_MAX_NUM];
CANFUNC_GLOBAL const INT32U USE_INT_CAN[CAN_MAX_NUM];
CANFUNC_GLOBAL const INT32U USE_TPM_CAN[CAN_MAX_NUM];
CANFUNC_GLOBAL const INT32U USE_BTR_CAN[CAN_MAX_NUM];
CANFUNC_GLOBAL const INT32U USE_SLP_MOD_CAN[CAN_MAX_NUM];
/*
***********************************************************************************************************
**函数原型 : void HwRstCAN (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : 无
**说 明 : 本函数用于硬件复位CAN控制器,主要是CAN模块掉电,用于省电处理
************************************************************************************************************/
CANFUNC_GLOBAL void HwRstCAN(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : void HwEnCAN (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : 无
**说 明 : 本函数用于硬件使能CAN控制器
************************************************************************************************************/
CANFUNC_GLOBAL void HwEnCAN(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : INT32U SoftRstCAN (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : =0,表示复位成功; !=0,复位不成功;
**说 明 : 本函数用于软件复位CAN控制器
************************************************************************************************************/
CANFUNC_GLOBAL INT32U SoftRstCAN(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : INT32U SoftEnCAN (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : =0,表示成功使CAN控制器进入工作模式; !=0,不成功;
**说 明 : 本函数用于软件使能CAN控制器
************************************************************************************************************/
CANFUNC_GLOBAL INT32U SoftEnCAN(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : SetCANBaudRate (eCANNUM CanNum,INT32U Val)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
: Val -->> 总线定时器值
**返回值 : =0,表示成功使CAN控制器设置波特率; !=0,不成功;
**说 明 : 本函数用于设置CAN的波特率
************************************************************************************************************/
CANFUNC_GLOBAL INT32U SetCANBaudRate (eCANNUM CanNum,INT32U Val);
/*
***********************************************************************************************************
**函数原型 : SetErWarmVal (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
** : Val -->> 错误警告寄存器的设定值
**返回值 : =0,表示成功使CAN控制器错误警告寄存器; !=0,不成功;
**说 明 : 本函数用于设置CAN的错误警告寄存器(只有在RM = 1时才可写入)
************************************************************************************************************/
INT32U SetErWarmVal (const eCANNUM CanNum, INT32U Val);
/*
***********************************************************************************************************
**函数原型 : SetTPMMOD (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
** : Val -->> 0:各自的CAN ID决定;1:由发送缓冲区的优先级域决定
**返回值 : =0,表示成功设置CAN的发送优先级模式位; !=0,不成功;
**说 明 : 本函数用于设置CAN的发送优先级模式
************************************************************************************************************/
INT32U SetTPMMOD (eCANNUM CanNum, INT32U Val);
/*
***********************************************************************************************************
**函数原型 : INT32U SetLOMMOD (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
** : Val -->> 只听模式选择 0;正常,1:只听
**返回值 : =0,表示成功设置CAN的只听模式; !=0,不成功;
**说 明 : 本函数用于设置CAN只听模式(只有在RM = 1时才可写入)
************************************************************************************************************/
INT32U SetLOMMOD (eCANNUM CanNum, INT32U Val);
/*
***********************************************************************************************************
**函数原型 : void CanSendCmd(eCANNUM CanNum,INT32U Cmd,INT32U TxBuf)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
Cmd -->> 发送命令字:1--单次发送,2--自发自收,3--单次自发自收,0--正常发送
TxBuf -->> 选择发送缓冲区
**返回值 :
**说 明 : 本函数用于发送命令处理
************************************************************************************************************/
#define NOM 0
#define SIG 1
#define SLF 2
#define SSR 3
#define TX_BUF1 1
#define TX_BUF2 2
#define TX_BUF3 4
CANFUNC_GLOBAL void CanSendCmd(eCANNUM CanNum,INT32U Cmd,INT32U TxBufNum);
/*
***********************************************************************************************************
**函数原型 : void RelCanRecBuf(eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 :
**说 明 : 本函数用于释放接收缓冲区
************************************************************************************************************/
CANFUNC_GLOBAL void RelCanRecBuf(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : void ClrCanDataOver(eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 :
**说 明 : 本函数用于清除数据溢出
************************************************************************************************************/
CANFUNC_GLOBAL void ClrCanDataOver(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : INT32U CanEntrySM(CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : =0;成功进入睡眠状态;
!=0;不能进入睡眠状态;
**说 明 : 本函数用于使CAN控制器进入休眠模式
***********************************************************************************************************
*/
CANFUNC_GLOBAL INT32U CanEntrySM(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : INT32U CanQuitSM(eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : =0;成功退出睡眠状态;
!=0;不能退出睡眠状态;
**说 明 : 本函数用于使CAN控制器退出休眠模式
***********************************************************************************************************
*/
CANFUNC_GLOBAL INT32U CanQuitSM(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : 宏定义函数 CanBufOffLinePrg(CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : 无
**说 明 : 本函数用于CAN控制器出现总线关闭错误处理
***********************************************************************************************************
*/
#define CanBufOffLinePrg(CanNum) if(CANMOD(CanNum).Bits.RM != 0) \
{ \
CANGSR(CanNum).Word=0; \
CANMOD(CanNum).Bits.RM=0x00; \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -