optical/NxBase/serial.h

116 lines
3.0 KiB
C
Raw Normal View History

2025-09-04 01:45:08 +00:00
#ifndef __SERIAL_H__
#define __SERIAL_H__
//---------------------------------------------------------------------------
#include "config.h"
//---------------------------------------------------------------------------
typedef enum
{
B4800 = 4800,
B9600 = 9600,
B14400 = 14400,
B19200 = 19200,
B38400 = 38400,
B57600 = 57600,
B115200 = 115200,
B230400 = 230400,
B460800 = 460800,
B921600 = 921600,
B1000000 = 1000000
}BAUD_TypeDef;
//-----------------------------------------------------------------------
typedef void (*ResvExProc)(u8 dat);
//-----------------------------------------------------------------------
#define USART_FUNC_DEF(usart) \
\
/* <20><>ʼ<EFBFBD><CABC>USART */ \
int InitUsart##usart(BAUD_TypeDef baud, char dat, char parity, char stop); \
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
int Usart##usart##SendData(u8 * pDatBuf, int len); \
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
int Usart##usart##GetData(u8 * pDat, int expectLen); \
/* <20><><EFBFBD>ս<EFBFBD><D5BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> */ \
int Usart##usart##CleanRsBuf(void); \
/* <20>õ<EFBFBD><C3B5>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD> */ \
int Usart##usart##GetRsLen(void); \
/* <20><><EFBFBD>շ<EFBFBD><D5B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> */ \
int Usart##usart##CleanSdBuf(void); \
/* <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD> */ \
int Usart##usart##GetSdFreeLen(void); \
/* <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA> */ \
int IsUsart##usart##SendBufEmpty(void); \
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> */ \
int IsUsart##usart##SendOver(void); \
/* <20>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
void USART##usart##IntProc(void); \
/* ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
void RegUsart##usart##ResvExFunc(ResvExProc proc); \
/* ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
int Usart##usart##SendDataSync(u8 * pDatBuf, int len); \
/* ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
int Usart##usart##GetDataSync(u8 * pDat, int expectLen); \
//-----------
//-----------------------------------------------------------------------
#ifdef COMM_USART1
USART_FUNC_DEF(1);
#endif
//-----------------------------------------------------------------------
#ifdef COMM_USART2
USART_FUNC_DEF(2);
#endif
//-----------------------------------------------------------------------
#ifdef COMM_USART3
USART_FUNC_DEF(3);
#endif
//-----------------------------------------------------------------------
#ifdef COMM_USART4
USART_FUNC_DEF(4);
#endif
//-----------------------------------------------------------------------
#ifdef COMM_USART5
USART_FUNC_DEF(5);
#endif
//-----------------------------------------------------------------------
#ifdef COMM_USART6
USART_FUNC_DEF(6);
#endif
//-----------------------------------------------------------------------
typedef int (*InitUsart)(BAUD_TypeDef baud, char dat, char parity, char stop); // <20><>ʼ<EFBFBD><CABC>
typedef int (*UsartSendData)(u8 * pDatBuf, int len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef int (*UsartGetData)(u8 * pDat, int expectLen); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef int (*UsartCleanRsBuf)(void); // <20><><EFBFBD>ս<EFBFBD><D5BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
typedef int (*UsartGetRsLen)(void); // <20>õ<EFBFBD><C3B5>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
typedef int (*UsartGetSdFreeLen)(void); // <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
typedef int (*UsartCleanSdBuf)(void); // <20><><EFBFBD>շ<EFBFBD><D5B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
typedef int (*IsUsartSendOver)(void); // <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
//-----------------------------------------------------------------------
#endif