rs232silversurfer.h

来自「伟大的Contiki工程, 短小精悍 的操作系统, 学习编程不可不看」· C头文件 代码 · 共 144 行

H
144
字号
/* * Copyright (c) 2003, Groepaz/Hitmen. * All rights reserved.  * * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met:  * 1. Redistributions of source code must retain the above copyright  *    notice, this list of conditions and the following disclaimer.  * 2. Redistributions in binary form must reproduce the above *    copyright notice, this list of conditions and the following *    disclaimer in the documentation and/or other materials provided *    with the distribution.  * 3. The name of the author may not be used to endorse or promote *    products derived from this software without specific prior *    written permission.   * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.   * * rs232silversurfer.h * * Groepaz/Hitmen, 16.12.2001 * * This defines for the SilverSurver (16c550 UART) what Ullrichs rs232 module * defines for the Swithlink/Turbo232 * * this driver operates in polling mode only atm ! * */#ifndef _RS232silversurfer_H#define _RS232silversurfer_H/*****************************************************************************//*                   Data                                                    *//*****************************************************************************//* Baudrate settings */#define RS_BAUD_50                0x00#define RS_BAUD_110               0x10#define RS_BAUD_134_5             0x20#define RS_BAUD_300               0x30#define RS_BAUD_600               0x40#define RS_BAUD_1200              0x50#define RS_BAUD_2400              0x60#define RS_BAUD_4800              0x70#define RS_BAUD_9600              0x80#define RS_BAUD_19200             0x90#define RS_BAUD_38400             0xa0#define RS_BAUD_57600             0xb0#define RS_BAUD_115200            0xc0#define RS_BAUD_230400            0xd0/* Stop bit settings */#define RS_STOP_1      	       		0x00#define RS_STOP_2      	       		0x04/* Data bit settings */#define RS_BITS_5      	       		0x00#define RS_BITS_6      	       		0x01#define RS_BITS_7      	       		0x02#define RS_BITS_8      	       		0x03/* Parity settings */#define RS_PAR_NONE    	       		0x00#define RS_PAR_ODD     	       		0x28#define RS_PAR_EVEN    	       		0x38#define RS_PAR_MARK    	       		0x48#define RS_PAR_SPACE   	       		0x48/* Bit masks to mask out things from the status returned by rs232_status */#define RS_STATUS_IRQ                   0x01    /* (iir) IRQ condition */#define RS_STATUS_OVERRUN               0x02    /* (lsr) Overrun error */#define RS_STATUS_PE                    0x04    /* (lsr) Parity error */#define RS_STATUS_FE                    0x08    /* (lsr) Framing error */#define RS_STATUS_DSR                   0x10    /* (msr>>1) NOT data set ready */#define RS_STATUS_THRE                  0x20    /* (lsr) Transmit holding reg. empty */#define RS_STATUS_DCD                   0x40    /* (msr>>1) NOT data carrier detect */#define RS_STATUS_RDRF                  0x80    /* Receiver data register full *//* Error codes returned by all functions */#define RS_ERR_OK                       0x00    /* Not an error - relax */#define RS_ERR_NOT_INITIALIZED 		0x01   	/* Module not initialized */#define RS_ERR_BAUD_TOO_FAST            0x02    /* Cannot handle baud rate */#define RS_ERR_BAUD_NOT_AVAIL           0x03    /* Baud rate not available */#define RS_ERR_NO_DATA                  0x04    /* Nothing to read */#define RS_ERR_OVERFLOW                 0x05    /* No room in send buffer *//*****************************************************************************//*				     Code			                                               	     *//*****************************************************************************/unsigned char __fastcall__ rs232_init (char hacked);/* Initialize the serial port, install the interrupt handler. The parameter * has no effect for now and should be set to 0. */unsigned char __fastcall__ rs232_params (unsigned char params, unsigned char parity);/* Set the port parameters. Use a combination of the #defined values above. */unsigned char __fastcall__ rs232_done (void);/* Close the port, deinstall the interrupt hander. You MUST call this function * before terminating the program, otherwise the machine may crash later. If * in doubt, install an exit handler using atexit(). The function will do * nothing, if it was already called. */unsigned char __fastcall__ rs232_get (char* b);/* Get a character from the serial port. If no characters are available, the * function will return RS_ERR_NO_DATA, so this is not a fatal error. */unsigned char __fastcall__ rs232_put (char b);/* Send a character via the serial port. There is a transmit buffer, but * transmitting is not done via interrupt. The function returns * RS_ERR_OVERFLOW if there is no space left in the transmit buffer. */unsigned char __fastcall__ rs232_pause (void);/* Assert flow control and disable interrupts. */unsigned char __fastcall__ rs232_unpause (void);/* Re-enable interrupts and release flow control */unsigned char __fastcall__ rs232_status (unsigned char* status,					 unsigned char* errors);/* Return the serial port status. *//* End of rs232silversurfer.h */#endif

⌨️ 快捷键说明

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