Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

179 lignes
6.6 KiB

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// File name    : uart_drv.h
// Version      : V0.1
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ifndef UART_DRV_H_
#define UART_DRV_H_
#include "memmap.h"
#include "uart_reg.h"
#define SCI1		        ((UART_TypeDef *)(SCI1_BASE_ADDR))
#define SCI2		        ((UART_TypeDef *)(SCI2_BASE_ADDR))
#define SCI3		        ((UART_TypeDef *)(SCI3_BASE_ADDR))
#define SCI_BT          SCI2
#define IS_UART_ALL_PERIPH(PERIPH) (((PERIPH) == SCI) || \
                                    ((PERIPH) == SCI_BT))
////////////////////////////////////////////////////////////////////////////////////////
#define SCI2_ENABLE_TRANSMITTER      (SCI2->SCICR2 |= SCICR2_TE_MASK)
#define SCI2_DISABLE_TRANSMITTER     (SCI2->SCICR2 &= ~SCICR2_TE_MASK)
#define SCI2_ENABLE_RECEIVER         (SCI2->SCICR2 |= SCICR2_RE_MASK)
#define SCI2_DISABLE_RECEIVER        (SCI2->SCICR2 &= ~SCICR2_RE_MASK)
////////////////////////////////////////////////////////////////////////////////////////
#define		UART_DATA_FRAME_LEN_10BIT	    0				//10bit frame:----StartBit:1bit DataBit:8bit StopBit:1bit
#define		UART_DATA_FRAME_LEN_11BIT	    SCICR1_M_MASK	//11bit frame:----StartBit:1bit DataBit:9bit StopBit:1bit
#define IS_UART_FRAMW_LENGTH(LENGTH) (((LENGTH) == UART_DATA_FRAME_LEN_10BIT) || \
                                      ((LENGTH) == UART_DATA_FRAME_LEN_11BIT))
#define		ParityDIS	                 0			      	//Parity Disable
#define		ParityEN	                 SCICR1_PE_MASK	//Parity Enable
#define		UART_PARITY_EVE		         0			      	//Even Parity
#define		UART_PARITY_ODD		         SCICR1_PT_MASK	//Odd Parity
#define   UART_PARITY_NONE           2              //NONE Parity
#define IS_UART_PARITY(PARITY) (((PARITY) == UART_PARITY_EVE) || \
                                ((PARITY) == UART_PARITY_ODD) || \
                                ((PARITY) == UART_PARITY_NONE))
typedef enum
{
	UART_NORMAL_MODE = 0,
	UART_INT_MODE,
	UART_EDMA_MODE
}UART_MODE;
#define IS_UART_MODE(MODE) (((MODE) == UART_NORMAL_MODE) || \
                            ((MODE) == UART_INT_MODE) || \
                            ((MODE) == UART_EDMA_MODE))
/* UART Init Structure definition */
typedef struct
{
  UINT32 UART_BaudRate;
  UINT8  UART_FrameLength;
  UINT8  UART_StopBits;
  UINT8  UART_Parity;
  UINT8  UART_Mode;
} UART_InitTypeDef;
typedef enum
{
    UART_RX = 0,
    UART_TX,
}UART_PINx;
extern UART_InitTypeDef UART_BT_InitStruct;
/*******************************************************************************
* Function Name  : UART_Init
* Description    : UART初始化
* Input          : - UARTx: where x can be 0 to 1 to select the UART peripheral;取值SCI0 or SCI1
*                  - UART_InitStruct:UARTx  initialization parameter structure Poniter
*
* Output         : None
* Return         : None
******************************************************************************/
extern void UART_Init(UART_TypeDef *UARTx, UART_InitTypeDef *UART_InitStruct);
/*******************************************************************************
* Function Name  : UART_SendByte
* Description    : UART发送一个字节
* Input          : - UARTx: where x can be 0 to 1 to select the UART peripheral;取值SCI0 or SCI1
*                  - SendByte:发送的字节
*
* Output         : None
* Return         : None
******************************************************************************/
extern void UART_SendByte(UART_TypeDef *UARTx, UINT8 SendByte);
/*******************************************************************************
* Function Name  : UART_SendData
* Description    : UART发送多个字节
* Input          : - UARTx: where x can be 0 to 1 to select the UART peripheral;取值SCI0 or SCI1
*                  - send:发送数据缓冲
*                  - len:发送的数据长度
*
* Output         : None
* Return         : None
******************************************************************************/
extern void UART_SendData(UART_TypeDef *UARTx, UINT8 *send, UINT16 len);
/*******************************************************************************
* Function Name  : UART_ByteRecieved
* Description    : UART接收到数据
* Input          : - UARTx:取值SCI1、 SCI2
*
* Output         : - None
*
* Return         : - TRUE:接收到数据
*                  - FALSE:没有接收到数据
******************************************************************************/
INT8 UART_ByteRecieved(UART_TypeDef *UARTx);
/*******************************************************************************
* Function Name  : UART_RecvByte
* Description    : UART接收一个字节
* Input          : - UARTx: where x can be 0 to 1 to select the UART peripheral;取值SCI0 or SCI1
*
*
* Output         : - dat:接收数据缓冲
*
* Return         : - TRUE:接收到数据
*                  - FALSE:没有接收到数据
******************************************************************************/
extern INT8 UART_RecvByte(UART_TypeDef *UARTx, UINT8 *dat);
/*******************************************************************************
* Function Name  : UART_ConfigGpio
* Description    : UART配置成GPIO用途
* Input          : - UARTx: where x can be 1, 2  to select the UART peripheral.
*                  - UART_Pin对应的PIN脚,取值UART_TX、UART_RX
*                  - UART_Dir:设置GPIO方向   GPIO_OUTPUT:输出  GPIO_INPUT:输入
*
* Output         : None
* Return         : None
******************************************************************************/
extern void UART_ConfigGpio(UART_TypeDef *UARTx, UART_PINx UART_Pin, UINT8 UART_Dir);
/*******************************************************************************
* Function Name  : UART_ReadGpioData
* Description    : 获取UART_Pin对应引脚的电平
* Input          : - UARTx: where x can be 1, 2  to select the UART peripheral.
*                  - UART_Pin对应的PIN脚,取值UART_TX、UART_RX
*
* Output         : None
* Return         : Bit_SET:高电平  Bit_RESET:低电平
******************************************************************************/
extern INT8 UART_ReadGpioData(UART_TypeDef *UARTx, UART_PINx UART_Pin);
/*******************************************************************************
* Function Name  : UART_WriteGpioData
* Description    : 设置UART_Pin对应引脚的电平
* Input          : - UARTx: where x can be 1, 2  to select the UART peripheral.
*                  - UART_Pin对应的PIN脚,取值UART_TX、UART_RX
*                  - bitVal:设置的电平,Bit_SET:设置为高电平  Bit_RESET:设置为低电平
*
* Output         : None
* Return         : None
******************************************************************************/
extern void UART_WriteGpioData(UART_TypeDef *UARTx, UART_PINx UART_Pin, UINT8 bitVal);
#endif /* UART_DRV_H_ */