⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can.h

📁 CanOpen的源代码
💻 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 + -