📄 serial.h
字号:
//======================================
//串口模块头文件
//FileName =serial.h
//Date Time=20071214...20071215
//======================================
#include"public.h"
#ifndef _SERIAL_H_
#define _SERIAL_H_
//--------------------------------------
//硬件引脚和操作代码宏定义
//--------------------------------------
//--------------------------------------
//常数的定义
//--------------------------------------
#define _DOUBLE_BAUDRATE_ 1
#ifdef _DOUBLE_BAUDRATE_
//U2X=1,波特率设置(FREQ_OS *62500*2) /9600 -1
#define CONST_INT_UBRR_SETS (uint)(((SYS_FREQ_MHZ *625)/48)-1)
#define CONST_BYTE_UCSRA (uchar)(BIT(UDRE) |BIT(U2X))
#else
//U2x=0,波特率设置(FREQ_OS *62500) /9600 -1
#define CONST_INT_UBRR_SETS (uint)(((SYS_FREQ_MHZ *625)/96)-1)
#define CONST_BYTE_UCSRA (uchar)(BIT(UDRE) )
#endif
//禁止RXD的功能和中断,发送寄存器空中断,发送允许,8位数据位(UCSZ2=0)
//#define CONST_BYTE_UCSRB (uchar)(BIT(TXEN) |BIT(TXCIE) |BIT(UDRIE))
//允许接收和发送中断
#define CONST_BYTE_UCSRB (uchar)(BIT(TXEN) |BIT(TXCIE) |BIT(UDRIE) |BIT(RXCIE) |BIT(RXEN))
#define CONST_BYTE_UCSRC (uchar)(BIT(URSEL) |BIT(UCSZ1) |BIT(UCSZ0) ) //无效验,1位停止位,8位数据位
#define CONST_RECV_BUFF_LEN_MAX 64
//--------------------------------------
//数据类型的定义
//--------------------------------------
struct _st_serial_buff{ //这里接收缓存被用作循环缓冲
uchar p_recv_start; //起始存储指针
uchar p_recv_end; //结束存储指针
uchar rlen_needed; //需要的接收长度(<=接收缓冲的长度)
uchar rlen_acted; //实际的接收长度
uchar recv[CONST_RECV_BUFF_LEN_MAX]; //接收缓冲
uchar slen_needed; //需要的发送长度, 从非0变化到0标识发送完毕
uchar tx_pos_start; //发送数据字节的指针
uchar send[64]; //发送缓冲
};
//--------------------------------------
//外部变量的说明
//--------------------------------------
extern volatile struct _st_serial_buff st_serial_buff;
//--------------------------------------
//函数的预定义
//--------------------------------------
//9600,8,1,N
void rs232_init_sets(void);
uchar rs232_recv_str(uchar *r_str, uchar r_len);
void rs232_send_str(uchar *s_str, uchar s_len);
#pragma interrupt_handler _irq_serial_rx_server:iv_USART_RX
#pragma interrupt_handler _irq_serial_udre_server:iv_USART_UDRE
#pragma interrupt_handler _irq_serial_tx_server:iv_USART_TX
#endif //_SERIAL_H_
//End Of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -