📄 lld_uart.h
字号:
/*______________________________________________________________________| FILE: lld_uart.h| PROJECT: OS20_ACCORDO+| SW-COMPONENT: |_______________________________________________________________________| DESCRIPTION: uart function|_______________________________________________________________________| COPYRIGHT: (c) 2005 STMicroelectronics, Arzano (ITALY)| HISTORY:| Date | Modification | Author|_______________________________________________________________________| 05.10.28 | Initial revision | M. De Martino|______________________________________________________________________*/#ifndef _LLD_UART_H_#define _LLD_UART_H_#include "types.h"#include "rccu_run.h"#ifdef __cplusplusextern "C" {#endif/************************************************************************|defines and macros|-----------------------------------------------------------------------*/#define COM_BUFFERSIZE ((tS32)1024)#define UART_BAUD_4800 ((tS32)4800)#define UART_BAUD_9600 ((tS32)9600)#define UART_BAUD_19200 ((tS32)19200)#define UART_BAUD_38400 ((tS32)38400)#define UART_BAUD_57600 ((tS32)57600)#define UART_BAUD_115200 ((tS32)115200)#define UART_BAUD_XCLK ((tS32)0)/************************************************************************|types|-----------------------------------------------------------------------*//* Uart identificator */typedef enum{ UART_EN_0, UART_EN_1}UART_tenId;typedef enum{ UART_EN_OFF, UART_EN_ON, UART_EN_CURRENT}UART_tenSwitch;/* Stop bits allowed by UART peripheral */typedef enum{ UART_EN_HALF_STOP_BITS = 0, UART_EN_ONE_STOP_BITS = 1, UART_EN_ONE_HALF_STOP_BITS = 2, UART_EN_TWO_STOP_BITS = 3}UART_tenStopBits;/* Data format allowed by UART peripheral */typedef enum{ UART_EN_EIGHT_BITS = 1, UART_EN_SEVEN_BITS_PA = 3, UART_EN_NINE_BITS = 4, UART_EN_EIGHT_BITS_WA = 5, UART_EN_EIGHT_BITS_PA = 7}UART_tenMode;/* Interrupt types generated by UART peripheral */typedef enum{ UART_EN_RX_BUFF_FULL = 0x0001, UART_EN_TX_EMPTY = 0x0002, UART_EN_TX_HALF_EMPTY = 0x0004, UART_EN_PARITY_ERROR = 0x0008, UART_EN_FRAME_ERROR = 0x0010, UART_EN_OVERRUN_ERROR = 0x0020, UART_EN_TIMEOUT_NOT_EMPTY = 0x0040, UART_EN_TIMEOUT_IDLE = 0x0080, UART_EN_RX_HALF_FULL = 0x0100}UART_tenInterrupt;/* Parity settings */typedef enum{ UART_EN_NONE, UART_EN_ODD, UART_EN_EVEN}UART_tenParity;/* LLD resource internal status */typedef enum{ UART_EN_UNKNOWN, UART_EN_IDLE, UART_EN_BUSY}UART_tenStatus;/* HISR activation */typedef enum{ UART_EN_TX_HISR, UART_EN_RX_HISR}UART_tenHisr;/************************************************************************|typedefs (scope: module-local)|-----------------------------------------------------------------------*//************************************************************************|function prototype (scope: global)|-----------------------------------------------------------------------*//* Hw abstraction layer interface */extern tVoid LLD_UART_vConfigUart(tVoid);extern tVoid LLD_UART_vInitUart(UART_tenId enId, tS8 *ps8wrBuff, tU32 u32wrBuffSize, tS8 *ps8rdBuff, tU32 u32rdBuffSize, tS32 baudRate, UART_tenStopBits stopBits, UART_tenMode mode, UART_tenParity parity);extern tVoid LLD_UART_vStopUartRxTx(UART_tenId enId);extern tVoid LLD_UART_vTxReset(UART_tenId enId);extern tVoid LLD_UART_vRxReset(UART_tenId enId);extern tVoid LLD_UART_vWriteTxBuffer(UART_tenId enId, tSChar s8Data);extern tS8 LLD_UART_s8ReadRxBuffer(UART_tenId enId);extern UART_tenSwitch LLD_UART_enSetFifoEnable(UART_tenId enId, UART_tenSwitch enVal);extern UART_tenSwitch LLD_UART_enSetRxEnable(UART_tenId enId, UART_tenSwitch enVal);extern UART_tenSwitch LLD_UART_enSetRun(UART_tenId enId, UART_tenSwitch enVal);//extern UART_tenSwitch LLD_UART_enSetLoopBack(UART_tenId enId, UART_tenSwitch enVal);extern tVoid LLD_UART_vSetParity(UART_tenId enId, UART_tenParity enVal);extern tVoid LLD_UART_vSetStopBits(UART_tenId enId, UART_tenStopBits enStopBits);extern tVoid LLD_UART_vSetMode(UART_tenId enId, UART_tenMode enMode);extern tVoid LLD_UART_vSetBaudRate(UART_tenId enId, const tS32 s32Baudrate);extern tVoid LLD_UART_SetTimeOut(UART_tenId enId, tU16 u16TimeOut);extern tVoid LLD_UART_vSetIntEnable(UART_tenId enId, UART_tenSwitch enVal, UART_tenInterrupt enIntr);extern tBool LLD_UART_bTxEmpty(UART_tenId enId);extern tBool LLD_UART_bHwFifoTxEmpty(UART_tenId enId);extern tBool LLD_UART_bRxFull(UART_tenId enId);extern tU32 LLD_UART_u32Write(UART_tenId enId, tS8 *ps8Buffer, tU32 u32nbytes);extern tU32 LLD_UART_u32Read(UART_tenId enId, tS8 *ps8Buffer, tU32 u32nbytes);extern tU32 LLD_UART_u32ReadBytes(UART_tenId enId);/* Comunication interface */extern UART_tenStatus LLD_UART_enGetTxStatus(UART_tenId enId);extern UART_tenStatus LLD_UART_enGetRxStatus(UART_tenId enId);extern tVoid LLD_UART_vSetTxStatus(UART_tenId enId, UART_tenStatus enStatus);extern tVoid LLD_UART_vSetRxStatus(UART_tenId enId, UART_tenStatus enStatus);/* Interrupt manager */extern tVoid INT_vUart0IntrMngr(tVoid);extern tVoid INT_vUart1IntrMngr(tVoid);/* Al: custom interrupt handler*/#define DEFAULT_UART_MGR &INT_vUart_Default_manager#define INSTALL_UART_MANAGER(uart, handler) LLD_UART_isrMgrUart##uart = handler#define RESTORE_UART_MANAGER(uart) LLD_UART_isrMgrUart##uart = DEFAULT_UART_MGRextern tVoid LLD_UART_InstallHookManager (tU8, tVoid (*fnct)(tU8));extern tVoid LLD_UART_RestoreHookManager(tU8);/* Setup uart */extern tVoid LLD_UART_Setup (tVoid);/* Al */#ifdef __cplusplus}#endif#endif/* End of file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -