亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mco.h

?? 1開放源碼的CanOpen(C)
?? H
字號:
/**************************************************************************
MODULE:    MCO
CONTAINS:  MicroCANopen implementation
COPYRIGHT: Embedded Systems Academy, Inc. 2002.
           All rights reserved. www.microcanopen.com
           This software was written in accordance to the guidelines at
		   www.esacademy.com/software/softwarestyleguide.pdf
DISCLAIM:  Read and understand our disclaimer before using this code!
           www.esacademy.com/disclaim.htm
LICENSE:   Users that have purchased a license for PCANopenMagic
           (www.esacademy.com/software/pcanopenmagic)
           may use this code in commercial projects.
           Otherwise only educational use is acceptable.
VERSION:   1.01, Pf/Aa/Ck 17-DEC-02
---------------------------------------------------------------------------
HISTORY:   1.01, Pf 17-DEC-02, Made Object Dictionary more readable
           1.00, Pf 07-OCT-02, First Published Version
***************************************************************************/ 
#ifndef _MCO_H
#define _MCO_H


/**************************************************************************
DEFINES: CONST ENTRIES IN OBJECT DICTIONARY
**************************************************************************/
// This is the joystick implementation
#define JOYSTICK

#define OD_NODEID        5
#define OD_HEARTBEAT     1000L
#define OD_DEVICE_TYPE   0x01050191L // DS401 - Joystick
#define OD_VENDOR_ID     0x03455341L // Embedded Systems Solutions
#define OD_PRODUCT_CODE  0x41543035L // "AT05"
#define OD_REVISION      0x00010014L // 1.20
#define OD_SERIAL        0xFFFFFFFFL


/**************************************************************************
DEFINES: ENABLING/DISABLING CODE FUNCTIONALITY
**************************************************************************/

// Maximum number of transmit PDOs (0 to 4)
#define NR_OF_TPDOS 2

// Maximum number of receive PDOs (0 to 4)
#define NR_OF_RPDOS 0

// If defined, 1 or more TPDOs use the event timer
#define USE_EVENT_TIME

// If defined, 1 or more TPDOs are change-of-state and use the inhibit timer
#define USE_INHIBIT_TIME

#ifndef USE_EVENT_TIME
  #ifndef USE_INHIBIT_TIME
ERROR: At least one, USE_EVENT_TIME or USE_INHIBIT_TIME must be defined!
  #endif
#endif

// If defined, OD entry [1017,00] is supported with SDO read/write accesses
// This is also an example on how to implement dynamic/variable OD entries
#define DYNAMIC_HEARTBEAT

// If defined, node starts up automatically (does not wait for NMT master)
// #define AUTOSTART

// If defined, application supports CANopen RUN and ERR LEDs
// Define the ports used for the LEDs
#define USE_LED
#ifdef USE_LED
#define LED_RUN P0_4 // Run LED is on P0.4
#define LED_ERR P0_5 // Error LED is on P0.5
#define LED_OFF 0
#define LED_ON 0xFF
#define LED_BLINK 0x7F
#define LED_FLASH1 1
#endif

// If defined, all parameters passed to functions are checked for consistency. 
// On failures, the user function MCOUSER_FatalError is called.
#define CHECK_PARAMETERS


/**************************************************************************
END OF CUSTOMIZATION AREA - DON'T CHANGE ANYTHING BELOW
**************************************************************************/

/**************************************************************************
GLOBAL TYPE DEFINITIONS
**************************************************************************/

// Standard data types
#define BYTE  unsigned char
#define WORD  unsigned int
#define DWORD unsigned long

// Boolean expressions
#define BOOLEAN unsigned char
#define TRUE 0xFF
#define FALSE 0

// Data structure for a single CAN message 
typedef struct
{
  WORD ID;                  // Message Identifier 
  BYTE LEN;                 // Data length (0-8) 
  BYTE BUF[8];              // Data buffer 
} CAN_MSG;

// This structure holds all node specific configuration
typedef struct
{
  BYTE Node_ID;             // Current Node ID (1-126)
  BYTE error_code;          // Bits: 0=RxQueue 1=TxQueue 3=CAN
  WORD Baudrate;            // Current Baud rate in kbit
  WORD heartbeat_time;      // Heartbeat time in ms
  WORD heartbeat_timestamp; // Timestamp of last heartbeat
  CAN_MSG heartbeat_msg;    // Heartbeat message contents
  BYTE error_register;      // Error regiter for OD entry [1001,00]
} MCO_CONFIG;

// This structure holds all the TPDO configuration data for one TPDO
typedef struct 
{
#ifdef USE_EVENT_TIME
  WORD event_time;          // Event timer in ms (0 for COS only operation)
  WORD event_timestamp;     // If event timer is used, this is the 
                            // timestamp for the next transmission
#endif
#ifdef USE_INHIBIT_TIME
  WORD inhibit_time;        // Inhibit timer in ms (0 if COS not used)
  WORD inhibit_timestamp;   // If inhibit timer is used, this is the 
                            // timestamp for the next transmission
  BYTE inhibit_status;      // 0: Inhibit timer not started or expired
                            // 1: Inhibit timer started
                            // 2: Transmit msg waiting for expiration of inhibit
#endif
  BYTE *pData;              // Pointer to application data
  CAN_MSG CAN;              // Current/last CAN message to be transmitted
} TPDO_CONFIG;

// This structure holds all the RPDO configuration data for one RPDO
typedef struct 
{
  WORD CANID;               // Message Identifier 
  BYTE LEN;                 // Data length (0-8) 
  BYTE *DAT;                // Pointer to destination of data 
} RPDO_CONFIG;


/**************************************************************************
GLOBAL FUNCTIONS
**************************************************************************/

/**************************************************************************
DOES: This function initializes the CANopen protocol stack.
      It must be called from within MCOUSER_ResetApplication.
**************************************************************************/
void MCO_Init 
  (
  WORD Baudrate,  // CAN baudrate in kbit(1000,800,500,250,125,50,25 or 10)
  BYTE Node_ID,   // CANopen node ID (1-126)
  WORD Heartbeat  // Heartbeat time in ms (0 for none)
  );


/**************************************************************************
DOES: This function initializes a transmit PDO. Once initialized, the 
      MicroCANopen stack automatically handles transmitting the PDO.
      The application can directly change the data at any time.
NOTE: For data consistency, the application should not write to the data
      while function MCO_ProcessStack executes.
**************************************************************************/
void MCO_InitTPDO
  (
  BYTE PDO_NR,     // TPDO number (1-4)
  WORD CAN_ID,     // CAN identifier to be used (set to 0 to use default)
  WORD event_tim,  // Transmitted every event_tim ms 
                   // (set to 0 if ONLY inhibit_tim should be used)
  WORD inhibit_tim,// Inhibit time in ms for change-of-state transmit
                   // (set to 0 if ONLY event_tim should be used)
  BYTE len,        // Number of data bytes in TPDO
  BYTE *dat        // Pointer to transmit data bytes
  );


/**************************************************************************
DOES: This function initializes a receive PDO. Once initialized, the 
      MicroCANopen stack automatically updates the data at *dat.
NOTE: For data consistency, the application should not read the data
      while function MCO_ProcessStack executes.
**************************************************************************/
void MCO_InitRPDO
  (
  BYTE PDO_NR,     // RPDO number (1-4)
  WORD CAN_ID,     // CAN identifier to be used (set to 0 to use default)
  BYTE len,        // Number of data bytes in RPDO
  BYTE *dat        // Pointer to destination location of data bytes
  );


/**************************************************************************
DOES: This function implements the main MicroCANopen protocol stack. 
      It must be called frequently to ensure proper operation of the
      communication stack. 
      Typically it is called from the while(1) loop in main.
**************************************************************************/
BYTE MCO_ProcessStack
  ( // Returns 0 if nothing needed to be done
    // Returns 1 if a CAN message was received or sent
  void
  );


/**************************************************************************
USER CALL-BACK FUNCTIONS
These must be implemented by the application.
**************************************************************************/

/**************************************************************************
DOES: This function resets the application. It is called from within the
      CANopen protocol stack, if a NMT master message was received that
      demanded "Reset Application".
**************************************************************************/
void MCOUSER_ResetApplication
  (
  void
  );


/**************************************************************************
DOES: This function both resets and initializes both the CAN interface
      and the CANopen protocol stack. It is called from within the
      CANopen protocol stack, if a NMT master message was received that
      demanded "Reset Communication".
      This function should call MCO_Init and MCO_InitTPDO/MCO_InitRPDO.
**************************************************************************/
void MCOUSER_ResetCommunication
  (
  void
  );


/**************************************************************************
DOES: This function is called if a fatal error occurred. 
      Error codes of mcohwxxx.c are in the range of 0x8000 to 0x87FF.
      Error codes of mco.c are in the range of 0x8800 to 0x8FFF. 
      All other error codes may be used by the application.
**************************************************************************/
void MCOUSER_FatalError
  (
  WORD ErrCode // To debug, search source code for the ErrCode encountered
  );

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人小视频免费观看| 中文在线免费一区三区高中清不卡| 日韩在线一二三区| 亚洲精品欧美激情| 日韩理论片中文av| 亚洲欧洲av在线| 亚洲色图一区二区三区| 国产精品成人午夜| 亚洲精品国产一区二区精华液 | 精品视频色一区| 奇米亚洲午夜久久精品| 一区二区三区四区不卡在线| 欧美激情在线一区二区| 久久久亚洲精品一区二区三区| 91精品国产品国语在线不卡| 欧美另类久久久品| 欧美一区二区免费观在线| 欧美日韩中文另类| 日韩视频123| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美区自拍先锋| 最好看的中文字幕久久| 一区二区三区在线视频观看58| 国产精品一级片在线观看| 99麻豆久久久国产精品免费| 国产成人av福利| 成人黄色一级视频| 91女人视频在线观看| 日本二三区不卡| 欧美一区二区免费| 国产亚洲1区2区3区| 亚洲欧美色图小说| 亚洲va在线va天堂| 国产馆精品极品| 欧美日韩中文字幕精品| 久久精品一区二区三区不卡 | 美女视频一区二区| 丁香婷婷综合五月| 欧美日韩不卡在线| 国产精品少妇自拍| 日本麻豆一区二区三区视频| 国产精品自拍毛片| 国产一区二区三区最好精华液| 国产盗摄一区二区三区| 欧美在线一区二区三区| 欧美精品一区二区三区在线| 亚洲精品欧美专区| 国产91丝袜在线18| 911精品产国品一二三产区| 国产精品短视频| 国产在线视频精品一区| 欧美亚洲动漫精品| 亚洲欧洲性图库| 国产综合色在线视频区| 91精品国模一区二区三区| 亚洲靠逼com| 成人aaaa免费全部观看| 久久久久一区二区三区四区| 亚洲成人免费影院| 在线免费不卡视频| 国产精品国产三级国产普通话99| 激情深爱一区二区| 日韩午夜激情av| 日韩国产精品久久久| 老司机免费视频一区二区三区| 日韩三级在线观看| 亚洲综合精品自拍| 成人的网站免费观看| 久久久久国产精品麻豆| 久久电影网站中文字幕| 91精品国产一区二区人妖| 一区二区三区久久| 精品国产不卡一区二区三区| 偷拍一区二区三区| 欧美在线看片a免费观看| 亚洲乱码国产乱码精品精可以看| 波多野结衣精品在线| 国产区在线观看成人精品 | 51精品国自产在线| 亚洲国产精品自拍| 欧美日韩一区精品| 丝袜亚洲另类欧美综合| 欧美电影影音先锋| 97久久精品人人做人人爽| 欧美精品久久99久久在免费线| 国产精品久久久久永久免费观看| 国精产品一区一区三区mba桃花 | 国产麻豆一精品一av一免费| 欧美tickling挠脚心丨vk| 免费欧美日韩国产三级电影| 日韩欧美色电影| 国产成人免费视频精品含羞草妖精| 精品国产乱码久久久久久久久| 黑人巨大精品欧美一区| 亚洲国产激情av| 色综合久久综合| 天天综合色天天综合色h| 日韩欧美黄色影院| 日韩影院在线观看| 欧美视频精品在线观看| 日本在线不卡一区| 久久午夜羞羞影院免费观看| 丁香激情综合国产| 曰韩精品一区二区| 欧美一区二区三区视频在线| 九九国产精品视频| 亚洲视频一区二区免费在线观看| 欧美在线免费视屏| 韩日av一区二区| 1024成人网| 欧美一区二区视频在线观看2022 | 欧美大胆人体bbbb| 懂色av一区二区在线播放| 一区二区三区电影在线播| 欧美哺乳videos| 99国产欧美久久久精品| 日本成人在线电影网| 中文字幕在线一区| 欧美成人在线直播| 欧美性做爰猛烈叫床潮| 激情文学综合插| 日韩精品福利网| 18涩涩午夜精品.www| 精品福利一区二区三区免费视频| 一本久久a久久免费精品不卡| 日本欧美久久久久免费播放网| 国产精品麻豆久久久| 欧美一区二区三区思思人| 91丨porny丨户外露出| 国产a视频精品免费观看| 成人动漫中文字幕| 天堂久久久久va久久久久| 久久伊99综合婷婷久久伊| 一本大道久久a久久精品综合| 狠狠色丁香久久婷婷综| 亚洲成人动漫精品| 一片黄亚洲嫩模| 国产精品久久久久久久久图文区| 欧美一级搡bbbb搡bbbb| 欧美色图片你懂的| 91丨国产丨九色丨pron| 国产福利一区二区| 极品尤物av久久免费看| 日本成人中文字幕在线视频| 亚洲狠狠丁香婷婷综合久久久| 国产精品久久三| 日本一区二区三区四区在线视频 | 在线国产电影不卡| av不卡一区二区三区| 国产精品自拍av| 成人av网站免费| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲精品国产一区二区三区四区在线 | 欧美一区二区三区在线| 欧美午夜寂寞影院| 在线观看www91| 色悠久久久久综合欧美99| 不卡av在线网| 色94色欧美sute亚洲线路一久| 91在线视频网址| 日韩欧美一区二区在线视频| 欧美日韩国产免费一区二区| 在线亚洲一区观看| 欧美日韩大陆在线| 欧美一级午夜免费电影| 精品久久99ma| 国产精品私人自拍| 亚洲欧洲精品一区二区三区不卡| 久久久久国产精品麻豆| 亚洲欧洲成人精品av97| 一区二区三区在线视频免费| 视频一区中文字幕国产| 蜜臀久久99精品久久久久宅男| 蜜臀av在线播放一区二区三区| 老司机午夜精品| 高清不卡一区二区| 色偷偷88欧美精品久久久| 欧美美女一区二区三区| 精品剧情在线观看| 亚洲国产精品精华液ab| 亚洲黄色av一区| 老司机午夜精品| jizz一区二区| 欧美日本一区二区三区| 精品美女在线观看| 一区视频在线播放| 日本午夜一本久久久综合| 国产一区二区在线视频| 色综合久久综合中文综合网| 欧美精品自拍偷拍| 欧美经典一区二区三区| 亚洲第一激情av| 丁香一区二区三区| 欧美日韩国产免费一区二区| 久久久久国产免费免费| 亚洲国产一二三| 成人在线视频首页| 日韩色在线观看| 亚洲成人综合视频| 成人国产精品视频|