/** * Copyright (c) 2022, Nations Technologies Inc. * * All rights reserved. * * This software is the exclusive property of Nations Technologies Inc. (Hereinafter * referred to as NATIONS). This software, and the product of NATIONS described herein * (Hereinafter referred to as the Product) are owned by NATIONS under the laws and treaties * of the People's Republic of China and other applicable jurisdictions worldwide. * * NATIONS does not grant any license under its patents, copyrights, trademarks, or other * intellectual property rights. Names and brands of third party may be mentioned or referred * thereto (if any) for identification purposes only. * * NATIONS reserves the right to make changes, corrections, enhancements, modifications, and * improvements to this software at any time without notice. Please contact NATIONS and obtain * the latest version of this software before placing orders. * Although NATIONS has attempted to provide accurate and reliable information, NATIONS assumes * no responsibility for the accuracy and reliability of this software. * * It is the responsibility of the user of this software to properly design, program, and test * the functionality and safety of any application made of this information and any resulting product. * In no event shall NATIONS be liable for any direct, indirect, incidental, special,exemplary, or * consequential damages arising in any way out of the use of this software or the Product. * * NATIONS Products are neither intended nor warranted for usage in systems or equipment, any * malfunction or failure of which may cause loss of human life, bodily injury or severe property * damage. Such applications are deemed, "Insecure Usage". * * All Insecure Usage shall be made at user's risk. User shall indemnify NATIONS and hold NATIONS * harmless from and against all claims, costs, damages, and other liabilities, arising from or related * to any customer's Insecure Usage. * Any express or implied warranty with regard to this software or the Product, including,but not * limited to, the warranties of merchantability, fitness for a particular purpose and non-infringement * are disclaimed to the fullest extent permitted by law. * Unless otherwise explicitly permitted by NATIONS, anyone may not duplicate, modify, transcribe * or otherwise distribute this software for any purposes, in whole or in part. * * NATIONS products and technologies shall not be used for or incorporated into any products or systems * whose manufacture, use, or sale is prohibited under any applicable domestic or foreign laws or regulations. * User shall comply with any applicable export control laws and regulations promulgated and administered by * the governments of any countries asserting jurisdiction over the parties or transactions. **/ /** *\*\file n32g003_uart.h *\*\author Nations *\*\version v1.0.0 *\*\copyright Copyright (c) 2022, Nations Technologies Inc. All rights reserved. **/ #ifndef __N32G003_UART_H #define __N32G003_UART_H #ifdef __cplusplus extern "C" { #endif #include "n32g003.h" /*** UART Structure Definition Start ***/ /** UART Init structure definition **/ typedef struct { uint32_t BaudRate; /* Configures the UART communication baud rate. */ uint16_t WordLength; /* Specifies the number of data bits transmitted or received in a frame. */ uint16_t StopBits; /* Specifies the number of stop bits transmitted. */ uint16_t Parity; /* Specifies the parity mode. */ uint16_t Mode; /* Specifies wether the Receive or Transmit mode is enabled or disabled. */ } UART_InitType; /*** UART Macro Definition Start ***/ /** All register bits are configure to 0 **/ #define UART_REG_BIT_MASK ((uint16_t)0x0000) /** Configures the word length of UART **/ #define UART_WL_MASK (~UART_CTRL1_WL) /* word length Mask */ #define UART_WL_8B (UART_REG_BIT_MASK) /* 8 bits */ #define UART_WL_9B (UART_CTRL1_WL) /* 9 bits */ /** UART STOP bits **/ #define CTRL2_STPB_CLR_MASK (~UART_CTRL2_STPB) /* UART CTRL2 STOP Bits Mask */ #define UART_STPB_1 (UART_REG_BIT_MASK) /* 1 STOP bit */ #define UART_STPB_2 (UART_CTRL2_STPB_1) /* 2 STOP bits */ /** UART parity selection **/ #define UART_PE_MASK (~(UART_CTRL1_PCEN | UART_CTRL1_PSEL)) /* UART parity Mask */ #define UART_PE_NO (UART_REG_BIT_MASK) /* UART parity disable */ #define UART_PE_EVEN (UART_CTRL1_PCEN) /* Even parity */ #define UART_PE_ODD (UART_CTRL1_PCEN | UART_CTRL1_PSEL) /* Odd parity */ /** UART is configured as RX or TX **/ #define UART_MODE_MASK (~(UART_CTRL1_RXEN | UART_CTRL1_TXEN)) /* UART mode Mask */ #define UART_MODE_RX (UART_CTRL1_RXEN) /* Transmitter enable */ #define UART_MODE_TX (UART_CTRL1_TXEN) /* Receiver enable */ /** UART enable or disable **/ #define CTRL1_UEN_SET (UART_CTRL1_UEN) /* UART Enable */ #define CTRL1_UEN_RESET (~UART_CTRL1_UEN) /* UART Disable */ /** Configure interrupt **/ #define INT_MASK ((uint16_t)0x001F) /* UART Interrupt Mask */ #define UART_INT_PEF ((uint16_t)0x0028) /* Parity error interrupt */ #define UART_INT_TXDE ((uint16_t)0x0727) /* TXDE interrupt */ #define UART_INT_TXC ((uint16_t)0x0626) /* Transmission complete interrupt */ #define UART_INT_RXDNE ((uint16_t)0x0525) /* RXDEN interrupt */ #define UART_INT_IDLEF ((uint16_t)0x0424) /* IDLE interrupt */ #define UART_INT_OREF ((uint16_t)0x0325) /* ORE interrupt */ /** UART address Mask **/ #define CTRL2_ADDR_MASK (~UART_CTRL2_ADDR) /** Wake up methods **/ #define CTRL1_WUM_MASK (~UART_CTRL1_WUM) /* UART WakeUp Method Mask */ #define UART_WUM_IDLELINE (UART_REG_BIT_MASK) /* Idle frame wake up */ #define UART_WUM_ADDRMASK (UART_CTRL1_WUM) /* Address mark wake up */ /** Receiver wakeup **/ #define CTRL1_RCVWU_SET (UART_CTRL1_RCVWU) /* UART mute mode Enable */ #define CTRL1_RCVWU_RESET (~UART_CTRL1_RCVWU) /* UART mute mode Disable */ /** UART Break Character send Mask **/ #define CTRL1_SDBRK_SET (UART_CTRL1_SDBRK) /** UART Half-Duplex Enable or Disable **/ #define CTRL3_HDMEN_SET (UART_CTRL3_HDMEN) /* UART Half-Duplex Enable */ #define CTRL3_HDMEN_RESET (~UART_CTRL3_HDMEN) /* UART Half-Duplex Disable */ /* Specifies the flag to check */ #define UART_FLAG_TXDE (UART_STS_TXDE) /* Transmit data register empty flag */ #define UART_FLAG_TXC (UART_STS_TXC) /* Transmission complete flag*/ #define UART_FLAG_RXDNE (UART_STS_RXDNE) /* Read data register not empty flag*/ #define UART_FLAG_IDLEF (UART_STS_IDLEF) /* IDLE line detected flag */ #define UART_FLAG_OREF (UART_STS_OREF) /* OverRun error flag */ #define UART_FLAG_NEF (UART_STS_NEF) /* Noise error flag */ #define UART_FLAG_FEF (UART_STS_FEF) /* Framing error flag*/ #define UART_FLAG_PEF (UART_STS_PEF) /* Parity error flag */ void UART_Reset(UART_Module* UARTx); void UART_Initializes(UART_Module* UARTx, UART_InitType* UART_InitStruct); void UART_Baud_Rate_Config(UART_Module* UARTx,uint32_t buad_rate); void UART_Word_Length_Config(UART_Module* UARTx,uint16_t word_length); void UART_Stop_Bits_Config(UART_Module* UARTx,uint16_t stop_bits); void UART_Parity_Config(UART_Module* UARTx,uint16_t parity); void UART_Mode_Config(UART_Module* UARTx,uint16_t mode); void UART_Structure_Initializes(UART_InitType* UART_InitStruct); void UART_Enable(UART_Module* UARTx); void UART_Disable(UART_Module* UARTx); void UART_Interrput_Enable(UART_Module* UARTx, uint16_t UART_interrupt); void UART_Interrput_Disable(UART_Module* UARTx, uint16_t UART_interrupt); void UART_Address_Set(UART_Module* UARTx, uint8_t UART_address); void UART_WakeUp_Mode_Set(UART_Module* UARTx, uint16_t UART_wake_up_mode); void UART_Receiver_Wakeup_Enable(UART_Module* UARTx); void UART_Receiver_Wakeup_Disable(UART_Module* UARTx); void UART_Data_Send(UART_Module* UARTx, uint16_t data); uint16_t UART_Data_Receive(UART_Module* UARTx); void UART_Break_Frame_Send(UART_Module* UARTx); void UART_Half_Duplex_Enable(UART_Module* UARTx); void UART_Half_Duplex_Disable(UART_Module* UARTx); FlagStatus UART_Flag_Status_Get(UART_Module* UARTx, uint16_t UART_flag); void UART_Flag_Clear(UART_Module* UARTx, uint16_t UART_flag); ITStatus UART_Interrupt_Status_Get(UART_Module* UARTx, uint16_t UART_interrupt); void UART_Interrupt_Status_Clear(UART_Module* UARTx, uint16_t UART_Interrupt); #ifdef __cplusplus } #endif #endif /* __N32G003_UART_H */ /******************* (C) COPYRIGHT 2022 NATIONZ *****END OF FILE****/