📄 can.h
字号:
#ifndef _CAN_H_
#define _CAN_H_
#include "compiler.h"
#define CAN_RCVQUEUESIZE 16 /* Plaetze im RCV-Queue + 1 */
#define CAN_XMTQUEUESIZE 8 /* Plaetze im XMT-Queue + 1 */
/**** Fehlerzustaende ****/
#define CAN_ERR_OK 0x00
#define CAN_ERR_XMTFULL 0x01 /* Sendepuffer im Controller ist voll */
#define CAN_ERR_OVERRUN 0x02 /* CAN-Controller wurde zu spaet gelesen */
#define CAN_ERR_BUSLIGHT 0x04 /* Busfehler: ein Errorcounter erreichte Limit */
#define CAN_ERR_BUSHEAVY 0x08 /* Busfehler: ein Errorcounter erreichte Limit */
#define CAN_ERR_BUSOFF 0x10 /* Busfehler: CAN_Controller ging 'Bus-Off' */
#define CAN_ERR_QRCVEMPTY 0x20 /* RcvQueue ist leergelesen */
#define CAN_ERR_QOVERRUN 0x40 /* RcvQueue wurde zu spaet gelesen */
#define CAN_ERR_QXMTFULL 0x80 /* Sendequeue ist voll */
#define CAN_ERR_ANYBUSERR (CAN_ERR_BUSLIGHT | CAN_ERR_BUSHEAVY | CAN_ERR_BUSOFF)
#define CAN_ErrorDummyID 0xFFFF /* ID fuer Messages, die keine empfangenen
Message, sondern Fehler transportieren */
#define CAN_BAUD_1M 0x1C00u
#define CAN_BAUD_500K 0x1C01u
#define CAN_BAUD_250K 0x1C03u
#define CAN_BAUD_125K 0x3A07u
#define CAN_BAUD_100K 0x4D07u
#define CAN_BAUD_50K 0x4D0fu
#define CAN_BAUD_20K 0x4D27u
#define CAN_BAUD_10K 0x7FFFu
#define CAN_BAUD_83K3 0x1417u
#define CAN_BAUD_47K6 0x1429u
#define CAN_BAUD_95K2 0x1414u
#define CAN_BAUD_33K3 0x581Du
/* Defines for CANI_qentrytyp.FORMAT */
#define CAN_EXT 0x02 // for Extended CAN-ID
#define CAN_RTR 0x01 // for RTR
extern const unsigned int nBaudrate[12];
/* CAN-IRQ XP0 an/ausschalten */
#define IRQ_DISABLE __DI()
#define IRQ_ENABLE __EI()
/*** Eine im Queue gepufferte CAN-Message */
typedef struct {
long int ID ;
word LEN_ERR ;
uchar DATA[8] ;
uchar FORMAT;
} CANI_qentrytyp ;
/*** Zeiger auf eine im BUFSPACE liegenden Queue-Eintrag */
typedef CANI_qentrytyp* CANI_qentryptr ;
void CAN_Init(word baudrate);
uchar CAN_Read(void);
int CAN_Write(void);
void CAN_RegisterMsg(word id);
void SendStatus(void);
extern unsigned long CAN_BUFF_ID ;
extern uchar CAN_BUFF_LEN ;
extern uchar CAN_BUFF_DATA[8] ;
extern uchar CAN_BUFF_FORMAT;
extern unsigned long int CAN_SendDirect;
extern unsigned long int CAN_SendIRQ;
extern unsigned long int CAN_Rcv;
extern unsigned long int CAN_RcvOverrun;
extern unsigned long int CAN_RcvQueueOverrun;
extern unsigned long int CAN_XmtQueueOverrun;
extern unsigned long int send_irq;
extern unsigned long int rec_irq;
__interrupt void CAN_Receive();
__interrupt void CAN_Transmit();
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -