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

📄 uart.h

📁 shengji chengxu daoshi hezai xiaznai
💻 H
字号:
/* uart.h */

#ifndef UART_H
#define UART_H


#ifdef __cplusplus
extern "C"
{
#endif

// 奇偶校验标识
#define UART_BIT_9_H                     0xA5
#define UART_BIT_9_L                     0x5A

// 波特率定义
#define BAUD_RATE                        1200
#define IR_CARRIER                      38000

// ACLK=32768,SMCLK=ACLK*32
#define SMCLK_FREQ                 (32768*32)

// generate IR carrier
#define IR_CAR_GEN    (SMCLK_FREQ/IR_CARRIER)

// BAUD_RATE
#define Bitime_5   (SMCLK_FREQ/(2*BAUD_RATE)) // ~ 0.5 bit length + small adjustment 13.6533
#define Bitime       ((SMCLK_FREQ/BAUD_RATE)) // 427us bit length ~ 2341 baud 27.30666

// 串口发送定义
#define N_HALF_CLK                         10
#define N_SEND_BIT                        200

// 串口接收定义
#define UART_HALF_BIT_TIME_1200            14
#define UART_BIT_TIME_1200                 27

// 串口波特率定义
#define BAUD_RATE_1200 0
#define BAUD_RATE_2400 3
#define BAUD_RATE_4800 6
#define BAUD_RATE_9600 9
#define BAUD_RATE_115200 12

#define FRAME_BUFFER_LEN 128

/* X-modem protocol format */

#define XM_SOH  0
#define XM_BLK  1
#define XM_RBLK  2
#define XM_DAT  3
#define XM_CS  131
#define XM_PTR  132
#define XM_REV  133
#define XM_FLASH_PTR  134

//ASCII code *
#define ASCII_SOH 0x01
#define ASCII_EOT 0x04
#define ASCII_ACK 0x06
#define ASCII_NAK 0x15
#define ASCII_CAN 0x18
#define ASCII_END   0x01
typedef struct _t_frm_
{
    unsigned char soh;
    unsigned char blk;
    unsigned char rblk;
    unsigned char buffer[FRAME_BUFFER_LEN];
    unsigned char cs;
    unsigned char ptr;
    unsigned char reversed;
    unsigned short flash_ptr;
}_t_frm;

typedef struct _t_pre_frm_
{
    unsigned char blk;
    unsigned char resp;
}_t_pre_frm;

extern void ext_io(unsigned short io);
extern void check_rx_buffer(unsigned char *frm,unsigned char *pre_frm);
extern void uart_wait(void);
extern void _uart_start_to_rx(unsigned char *frm);
extern void _uart_start_to_tx(unsigned char data);
extern void _uart_wait(void);

#ifdef DTSD
#define RS_TX_EN() (ext_io(0xFFFB))
#define RS_RX_EN() (ext_io(0xFFFF))
#else
#ifdef DTSF
#define RS_TX_EN() (UART_TX_EN_OUT&=~UART_TX_EN)
#define RS_RX_EN() (UART_TX_EN_OUT|=UART_TX_EN)
#else
#define RS_TX_EN() (UART_TX_EN_OUT|=UART_TX_EN)
#define RS_RX_EN() (UART_TX_EN_OUT&=~UART_TX_EN)
#endif
#endif

#ifdef __cplusplus
}
#endif


#endif /* UART_H */



⌨️ 快捷键说明

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