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

📄 xmodem.h

📁 XMODEM串口下载代码
💻 H
字号:
#ifndef __XMODEM_H
#define __XMODEM_H

#define DATA_NUM_PER_PACKET               128
#define CRC_DATA_NUM_PER_PACKET           2
#define MAX_SEQ_NO                        255

#define XMODEM_PAKET_LENGTH               (1+1+1+128+2)

#define RETURN_NO_ERR                     0
#define RETURN_ERR                        1

#define TRUE                              1
#define FALSE                             0

/* CRC-CCITT 16 is based on the polynomial x^16+x^12+x^5+1, and the reference value is 0x1021 */
#define CRC16_POLY      0x1021

enum DownLoadState
{
    START_OF_HEADER,
    SEQUENCE_NO,
    COMP_OF_SEQ_NO,
    DATA,
    C_R_C
};

enum CNTLCHAR
{
    SOH          = 0X01,
	STX          = 0x02,
	ETX          = 0x03,
    EOT          = 0X04,
    ACK          = 0X06,
    NAK          = 0X15,
    CAN          = 0X18,
    C            = 0X43
};

enum XModemSendState
{
    NOTSTART,
    STARTED
};

struct XMODEM_PacketStruct
{
    unsigned char SOH;                            // Start of Header               
    unsigned char SeqNo;                          // Sequence No.                  
    unsigned char CmpOfSeqNo;                     // Compensate of Sequence No.    
    unsigned char Data[ DATA_NUM_PER_PACKET ];    // Data                          
    unsigned char CRC[ CRC_DATA_NUM_PER_PACKET ]; // CRC                     
};

extern unsigned long XMODEM_StartOfHeader ( void );
extern unsigned long XMODEM_SequenceNo ( void );
extern unsigned long XMODEM_CompOfSeqNo ( void );
extern unsigned long XMODEM_Data ( void );
extern unsigned long XMODEM_Crc( void );
extern unsigned long XMODEM_Load( unsigned char *start_addr, unsigned long dwAllowedMem );
extern unsigned long XMODEM_Dump( unsigned char *str, unsigned long size );

extern void XMODEM_Purge( void );
extern void XMODEM_ProduceSendString( unsigned char *str, unsigned char *buffer, unsigned long order, unsigned long frames, unsigned char last_frame_len );
extern void XMODEM_LeaveProcess( void );

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -