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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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 encoder example
#define ENCODER

#define OD_NODEID 7
#define OD_HEARTBEAT     1000L
#define OD_DEVICE_TYPE   0x00010196L // DS406 - Encoder, single turn rotary
#define OD_VENDOR_ID     0x03455341L // Embedded Systems Solutions
#define OD_PRODUCT_CODE  0x41543037L // "AT07"
#define OD_REVISION      0x00010013L // 1.19
#define OD_SERIAL        0xFFFFFFFFL
#define OD_PRODUCT_NAME  0x41343036L // "A406"


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

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

// 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性做爰猛烈叫床潮| 一本久久a久久免费精品不卡| 欧美激情一区二区三区全黄| 在线免费不卡视频| 国产精品一区三区| 亚洲福利一二三区| 国产欧美日韩视频在线观看| 91精品国产手机| 91免费在线看| 国产酒店精品激情| 热久久国产精品| 亚洲天堂福利av| 久久久午夜电影| 欧美嫩在线观看| 91农村精品一区二区在线| 国产精品亚洲第一区在线暖暖韩国| 亚洲午夜精品在线| 综合分类小说区另类春色亚洲小说欧美| 欧美成人性福生活免费看| 欧美视频在线一区| 91香蕉国产在线观看软件| 国产福利一区二区三区视频在线| 首页国产欧美日韩丝袜| 亚洲精品欧美二区三区中文字幕| 久久精品人人做人人综合| 日韩欧美国产综合一区 | 欧美在线小视频| 成人av第一页| 成人激情免费视频| 国产一区二区三区免费观看| 奇米影视7777精品一区二区| 午夜精品久久久久久久久久| 亚洲一区二区三区四区在线| 亚洲女人的天堂| 国产精品久久久久久久浪潮网站| 久久久精品人体av艺术| 久久综合狠狠综合久久综合88 | 久久毛片高清国产| 精品视频一区三区九区| 91国模大尺度私拍在线视频| 波多野结衣精品在线| 北条麻妃一区二区三区| 成人91在线观看| 不卡的av网站| 91美女在线看| 色视频一区二区| 在线一区二区三区四区五区| 日本久久精品电影| 欧美日韩一区二区在线观看| 欧美日韩一区 二区 三区 久久精品| 欧美中文字幕一区| 911精品国产一区二区在线| 69av一区二区三区| 26uuu精品一区二区| 国产日韩欧美精品在线| 国产精品久久久久婷婷二区次| 国产精品免费网站在线观看| 国产精品国产成人国产三级 | 欧美电影免费提供在线观看| 亚洲精品一区二区三区精华液 | 亚洲国产欧美在线| 天天射综合影视| 五月天丁香久久| 亚洲成人动漫一区| 亚洲一区精品在线| 美女爽到高潮91| 免费成人深夜小野草| 日韩成人精品在线观看| 麻豆免费精品视频| 国内精品免费**视频| 国产福利一区二区| 色网综合在线观看| 日韩视频永久免费| 久久精品欧美一区二区三区麻豆 | 国产精品高潮呻吟| 亚洲欧美日本在线| 亚洲成人自拍网| 日本v片在线高清不卡在线观看| 青青草国产成人99久久| 韩日精品视频一区| 成人一区二区三区视频在线观看| 国产91精品露脸国语对白| 波多野结衣精品在线| 欧美色图天堂网| 日韩欧美一区二区三区在线| 欧美一区二区在线看| 久久久久国色av免费看影院| 国产精品护士白丝一区av| 亚洲乱码一区二区三区在线观看| 日韩av一区二区三区四区| 国产原创一区二区| 色综合久久99| 日韩欧美的一区| 国产精品卡一卡二| 亚洲mv在线观看| 国产精品一区一区三区| 91污片在线观看| 久久亚洲综合色一区二区三区| 国产精品久久久久精k8| 亚洲gay无套男同| 国产麻豆精品一区二区| 色88888久久久久久影院野外 | 免费观看在线色综合| 国产精一品亚洲二区在线视频| a级精品国产片在线观看| 欧美视频在线不卡| 欧美激情综合在线| 亚洲成av人综合在线观看| 国产一区二区三区蝌蚪| 欧美又粗又大又爽| 中文字幕不卡在线观看| 日韩和欧美的一区| 成人av第一页| 日韩欧美亚洲一区二区| 亚洲免费观看在线视频| 欧美日免费三级在线| 国产精品午夜在线| 蜜臀av性久久久久av蜜臀妖精 | 国产精品天干天干在观线| 丝袜诱惑亚洲看片| 成人免费福利片| 91福利国产精品| 中文字幕第一页久久| 日韩av在线免费观看不卡| 91色porny| 亚洲国产高清在线观看视频| 久久精品国产99国产精品| 欧美视频一区二区在线观看| 国产精品丝袜一区| 日本成人中文字幕| 欧美性猛交xxxxxxxx| 18涩涩午夜精品.www| 国产精品一品二品| 日韩精品最新网址| 五月天网站亚洲| 懂色av一区二区三区免费看| 久久免费视频一区| 麻豆国产精品一区二区三区| 欧美天天综合网| 亚洲日本在线a| 不卡一区在线观看| 国产亚洲成aⅴ人片在线观看| 国产一区二区剧情av在线| 91精品国产乱码| 日韩影视精彩在线| 色噜噜狠狠色综合中国| 国产精品久久久99| 日韩精品成人一区二区三区| 91久久免费观看| 亚洲色图另类专区| 91免费在线播放| 中文字幕一区二区三区在线不卡| 成人永久免费视频| 国产精品福利电影一区二区三区四区| 国产成人av电影在线播放| 久久婷婷色综合| 国产一区二区三区日韩| 中文字幕av免费专区久久| 岛国精品在线观看| 中文无字幕一区二区三区| 成人自拍视频在线观看| 国产精品欧美久久久久无广告| 99re热视频这里只精品| 亚洲激情在线激情| 欧美日韩国产精选| 国产一区二区视频在线播放| 2024国产精品| 成人午夜在线播放| 亚洲欧美日韩中文播放| 色94色欧美sute亚洲线路二| 亚洲欧美日韩综合aⅴ视频| 欧美专区亚洲专区| 亚洲国产成人91porn| 欧美日韩国产小视频在线观看| 午夜欧美大尺度福利影院在线看| 91精品久久久久久久91蜜桃| 老司机免费视频一区二区| 久久精品亚洲乱码伦伦中文| 成人性生交大片| 亚洲精品ww久久久久久p站| 欧美日本免费一区二区三区| 偷拍日韩校园综合在线| 国产日产欧美一区| 色狠狠色狠狠综合| 91国偷自产一区二区三区成为亚洲经典 | 成人高清视频在线观看| 国产免费观看久久| 91精品中文字幕一区二区三区| 韩国女主播成人在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 色婷婷av一区二区三区gif| 亚洲国产aⅴ天堂久久| 26uuu成人网一区二区三区| 国产99一区视频免费| 亚洲国产一区二区在线播放| 日韩视频免费观看高清完整版在线观看 | 亚洲日本护士毛茸茸| 正在播放亚洲一区| 波多野结衣91| 美腿丝袜亚洲一区|