Electricity/FWLIB/include/ENS1_UART.h

148 lines
4.5 KiB
C
Raw Permalink Normal View History

/*
*Copyright (C),2023 , NANOCHAP
*File name: ENS1_UART.H
*Author:
*Version: V1.0
*Date: 2023-11-
*Description:
*Function List:
1 void UART_Init(CMSDK_UART_TypeDef *CMSDK_UART, UART_InitStructure* uart_paraX);
2 void UART_ITConfig(CMSDK_UART_TypeDef *CMSDK_UART, UART_ITStructure* uart_paraX);
3 unsigned char UartPutc(CMSDK_UART_TypeDef *CMSDK_UART ,unsigned char my_ch);
History:
1.V1.0
Date:
Author:
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#ifndef _ENS1_UART_H_
#define _ENS1_UART_H_
#include "MY_HEADER.h"
#include "CMSDK_CM0.h"
#include "ENS1_CLOCK.h"
#include "math.h"
#define UART0_RX GPIO_2
#define UART0_TX GPIO_3
#define UART0_RTS GPIO_4
#define UART0_CTS GPIO_5
#define UART1_RX GPIO_12
#define UART1_TX GPIO_13
#define UART1_RTS GPIO_14
#define UART1_CTS GPIO_15
#define InterruptDisable __disable_irq
#define InterruptEnable __enable_irq
typedef enum uartRcvfifoTrigger{byte_1=0 , bytes_4=1,bytes_8=2,bytes_14=3}uartRcvTrigger;
typedef enum {OverSamp_16 = 0,OverSamp_13}UART_OverSamp;
/*uart<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>*/
typedef struct uart_fifo{
uartRcvTrigger level;
uint8_t DMA_Enable ;
uint8_t FIFO_Enable ;
}UART_FifoStructrue;
typedef struct uart_para{
uint8_t UART_OverSampMode;
uint32_t UART_BaudRate;
uint8_t UART_HardwareFlowControl; //Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
UART_FifoStructrue* FifoSetting ;
}UART_InitStructure;
extern UART_FifoStructrue UART0_Fifo;
extern UART_InitStructure UART0_Init;
extern UART_FifoStructrue UART1_Fifo;
extern UART_InitStructure UART1_Init;
/*
<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Դ˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1<EFBFBD><EFBFBD>THREINT THR<EFBFBD><EFBFBD><EFBFBD>ͼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>
2<EFBFBD><EFBFBD>RDAINT <EFBFBD><EFBFBD><EFBFBD>ռĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>FIFOģʽ<EFBFBD>´<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
3<EFBFBD><EFBFBD>RTOINT FIFOģʽ<EFBFBD>½<EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>ֽ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>
4<EFBFBD><EFBFBD>RLSINT <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
5<EFBFBD><EFBFBD>MSIINT <EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>CTS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>autoflow<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DSR/RI/DCD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
*/
/*<2A>ж<EFBFBD>ʹ<EFBFBD><CAB9>*/
#define MSI_EN (uint8_t)0X8
#define RLSI_EN (uint8_t)0X4
#define THRE_EN (uint8_t)0X2
#define RDAI_EN (uint8_t)0X1
/*<2A>ж<EFBFBD><D0B6><EFBFBD>Ϣ*/
#define INT_MODEM_STATUS (uint8_t)0X0
#define INT_THR_EMPTY (uint8_t)0X1
#define INT_RCV_DATA_AVAILABLE (uint8_t)0X2
#define INT_RCV_LINE_STATUS (uint8_t)0X3
#define INT_CHAR_TIMEOUT_INDICATION (uint8_t)0X6
typedef struct uart_it_para{
uint8_t UartIntModel ; //ѡ<><D1A1><EFBFBD>жϵ<D0B6>ģʽ
uint8_t UartDMAEnable; //ѡ<><D1A1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>DMA
}UART_ITStructure;
extern UART_ITStructure UART0_ITSet;
extern UART_ITStructure UART1_ITSet;
#define UART_WordLength_5b ((uint8_t)0x00)
#define UART_WordLength_6b ((uint8_t)0x01)
#define UART_WordLength_7b ((uint8_t)0x02)
#define UART_WordLength_8b ((uint8_t)0x03)
#define UART_NO_PARITY ((uint8_t)0x00 & 0xff)
#define UART_LOGIC_1_ODD_NUM ((uint8_t)0x08 & 0xff) //<2F>߼<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define UART_LOGIC_1_EVEN_NUM ((uint8_t)0x18 & 0xff) //<2F>߼<EFBFBD><31><C5BC><EFBFBD><EFBFBD>
#define UART_STICK_PARITY_AS1 ((uint8_t)0x28 & 0xff) //<2F>̶<EFBFBD><CCB6><EFBFBD>żУ<C5BC><D0A3>Ϊ1
#define UART_STICK_PARITY_AS0 ((uint8_t)0x38 & 0xff)
/*<2A>ж<EFBFBD><D0B6><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ*/
/*<2A>жϹ<D0B6><CFB9><EFBFBD>*/
uint8_t UART_INT_PEND(CMSDK_UART_TypeDef* UARTx); //Ϊ0ʱ<30><CAB1>UART<52><54><EFBFBD>жϹ<D0B6><CFB9><EFBFBD>
/*<2A>ж<EFBFBD>״̬<D7B4>ж<EFBFBD>*/
uint8_t UART_INT_TYPE(CMSDK_UART_TypeDef* UARTx);
/*fifo ʹ<><CAB9>ָʾ<D6B8><CABE>*/
uint8_t UART_FIFO_USE(CMSDK_UART_TypeDef* UARTx); //0:<3A><>fifoģʽ 1<><31>fifo ʹ<><CAB9>
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO*/
void UART_TXCLR(CMSDK_UART_TypeDef* UARTx);
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO*/
void UART_RXCLR(CMSDK_UART_TypeDef* UARTx);
/*FIFOʹ<4F><CAB9>*/
void UART_FIFOEnable(CMSDK_UART_TypeDef* UARTx);
/*FIFO<46>ر<EFBFBD>*/
void UART_FIFODisable(CMSDK_UART_TypeDef* UARTx);
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
uint8_t READ_UART_RCVBuff(CMSDK_UART_TypeDef* UARTx );
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
void WRITE_UART_THRBuff(CMSDK_UART_TypeDef* UARTx ,uint8_t data);
/*FIFO״̬<D7B4><CCAC>ȡ*/
uint8_t UART_RX_FIFO_LEN(CMSDK_UART_TypeDef* UARTx) ;
uint8_t UART_TX_FIFO_LEN(CMSDK_UART_TypeDef* UARTx) ;
uint8_t UART_RX_FIFO_FULL(CMSDK_UART_TypeDef* UARTx) ;
uint8_t UART_RX_FIFO_EMPTY(CMSDK_UART_TypeDef* UARTx) ;
uint8_t UART_TX_FIFO_FULL(CMSDK_UART_TypeDef* UARTx) ;
uint8_t UART_TX_FIFO_EMPTY(CMSDK_UART_TypeDef* UARTx) ;
/*<2A>շ<EFBFBD><D5B7><EFBFBD>״̬<D7B4><CCAC>ȡ*/
uint8_t UARTLine_RCVError(CMSDK_UART_TypeDef* UARTx);
/*<2A>жϷ<D0B6><CFB7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>*/
uint8_t UARTLine_TRANSEmpty(CMSDK_UART_TypeDef* UARTx);
/*<2A>ж<EFBFBD>THR<48>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>*/
uint8_t UARTLine_THREmpty(CMSDK_UART_TypeDef* UARTx);
/*UART<52><54>ʼ<EFBFBD><CABC>*/
void UART_Init(CMSDK_UART_TypeDef *CMSDK_UART, UART_InitStructure* uart_paraX);
void UART_ITConfig(CMSDK_UART_TypeDef *CMSDK_UART, UART_ITStructure* uart_paraX);
unsigned char UartPutc(CMSDK_UART_TypeDef *CMSDK_UART ,unsigned char my_ch);
#endif