CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Include/ciu32l051_std_lpuart.h

921 lines
34 KiB
C
Raw Normal View History

/************************************************************************************************/
/**
* @file ciu32L051_std_lpuart.h
* @author MCU Ecosystem Development Team
* @brief LPUART STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>LPUART<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>STD<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>
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/*<2A><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>*/
#ifndef CIU32L051_STD_LPUART_H
#define CIU32L051_STD_LPUART_H
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @defgroup LPUART LPUART
* @brief <EFBFBD>͹<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
/************************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32L051_std_common.h"
/*-----------------------------------------type define------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup LPUART_Types LPUART Types
* @brief LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
* @{
*
*/
/************************************************************************************************/
/**
* @brief LPUART <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
uint32_t prescaler; /**< LPUART ʱ<><CAB1>Ԥ<EFBFBD><D4A4>Ƶ
@arg LPUART_PRESCALER_DIV1 ... */
uint32_t direction; /**< LPUART <20><><EFBFBD><EFBFBD><E4B7BD>
@arg LPUART_DIRECTION_SEND ... */
uint32_t baudrate; /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint32_t wordlength; /**< LPUART <20><><EFBFBD><EFBFBD>֡<EFBFBD>ֳ<EFBFBD>
@arg LPUART_WORDLENGTH_8BITS ... */
uint32_t stopbits; /**< LPUART <20><><EFBFBD><EFBFBD>ֹ֡ͣλ<D6B9><CEBB><EFBFBD><EFBFBD>
@arg LPUART_STOPBITS_1 ... */
uint32_t parity; /**< LPUART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>żУ<C5BC><D0A3>
@arg LPUART_PARITY_NONE ... */
uint32_t hardware_flow; /**< LPUART RS232Ӳ<32><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@arg LPUART_FLOWCONTROL_NONE ... */
} std_lpuart_init_t;
/**
* @brief LPUART Ԥ<EFBFBD><EFBFBD>Ƶֵ
*/
static const uint16_t LPUART_PRESCALER_TABLE[] =
{
(uint16_t)1U,
(uint16_t)2U,
(uint16_t)4U,
(uint16_t)6U,
(uint16_t)8U,
(uint16_t)10U,
(uint16_t)12U,
(uint16_t)16U,
(uint16_t)32U,
(uint16_t)64U,
(uint16_t)128U,
(uint16_t)256U
};
/**
* @}
*/
/*--------------------------------------------define--------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup LPUART_Constants LPUART Constants
* @brief LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*
*/
#define LPUART_t USART_t
/* LPUART<52><54>־<EFBFBD><D6BE><EFBFBD><EFBFBD>λ(LPUART_ICR<43>Ĵ<EFBFBD><C4B4><EFBFBD>) */
#define LPUART_CLEAR_PE USART_ICR_PECF /**< <20><>żУ<C5BC><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
#define LPUART_CLEAR_FE USART_ICR_FECF /**< ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
#define LPUART_CLEAR_ORE USART_ICR_ORECF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
#define LPUART_CLEAR_TC USART_ICR_TCCF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
#define LPUART_CLEAR_CTS USART_ICR_CTSCF /**< CTS<54><53>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
#define LPUART_CLEAR_CM USART_ICR_CMCF /**< <20>ַ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define LPUART_CLEAR_LPWK USART_ICR_LPWKCF /**< <20>͹<EFBFBD><CDB9><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>ѱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
/* LPUART<52><54>־(LPUART_ISR<53>Ĵ<EFBFBD><C4B4><EFBFBD>) */
#define LPUART_FLAG_PE USART_ISR_PE /**< LPUART <20><>żУ<C5BC><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
#define LPUART_FLAG_FE USART_ISR_FE /**< LPUART ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
#define LPUART_FLAG_ORE USART_ISR_ORE /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
#define LPUART_FLAG_RXNE USART_ISR_RXNE /**< LPUART <20><><EFBFBD>ռĴ<D5BC><C4B4><EFBFBD><EFBFBD>ǿձ<C7BF>־ */
#define LPUART_FLAG_TC USART_ISR_TC /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־ */
#define LPUART_FLAG_TXE USART_ISR_TXE /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD>ձ<EFBFBD>־ */
#define LPUART_FLAG_CTSIF USART_ISR_CTSIF /**< LPUART CTS<54><53>־<EFBFBD>жϱ<D0B6>־ */
#define LPUART_FLAG_CTS USART_ISR_CTS /**< LPUART CTS<54><53>־ */
#define LPUART_FLAG_CM USART_ISR_CMF /**< LPUART <20>ַ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>־ */
#define LPUART_FLAG_LPWKF USART_ISR_LPWK /**< LPUART <20>͹<EFBFBD><CDB9><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>ѱ<EFBFBD>־ */
#define LPUART_FLAG_TEACK USART_ISR_TEACK /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ȷ<EFBFBD>ϱ<EFBFBD>־ */
#define LPUART_FLAG_REACK USART_ISR_REACK /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ȷ<EFBFBD>ϱ<EFBFBD>־ */
#define LPUART_FLAG_BUSY USART_ISR_BUSY /**< LPUART <20><><EFBFBD><EFBFBD>æ<EFBFBD><C3A6>־ */
/* LPUART<52>ж<EFBFBD>ʹ<EFBFBD><CAB9>λ(LPUART_CR1<52><31>LPUART_CR3<52>Ĵ<EFBFBD><C4B4><EFBFBD>) */
#define LPUART_CR1_INTERRUPT_RXNE USART_CR1_RXNEIE /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
#define LPUART_CR1_INTERRUPT_TC USART_CR1_TCIE /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
#define LPUART_CR1_INTERRUPT_TXE USART_CR1_TXEIE /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
#define LPUART_CR1_INTERRUPT_PE USART_CR1_PEIE /**< LPUART <20><>żУ<C5BC><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
#define LPUART_CR1_INTERRUPT_CM USART_CR1_CMIE /**< LPUART <20>ַ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
#define LPUART_CR3_INTERRUPT_ERR USART_CR3_EIE /**< LPUART <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9><><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬽<EFBFBD><F3A3ACBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
#define LPUART_CR3_INTERRUPT_CTS USART_CR3_CTSIE /**< LPUART CTS<54>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
#define LPUART_CR3_INTERRUPT_LPWK USART_CR3_LPWKIE /**< LPUART Stop<6F>͹<EFBFBD><CDB9><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
/*
* LPUARTʱ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Ĭ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>256<EFBFBD><EFBFBD>Ƶ
*/
#define LPUART_PRESCALER_DIV1 (0x00000000U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk */
#define LPUART_PRESCALER_DIV2 (0x00000001U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/2 */
#define LPUART_PRESCALER_DIV4 (0x00000002U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/4 */
#define LPUART_PRESCALER_DIV6 (0x00000003U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/6 */
#define LPUART_PRESCALER_DIV8 (0x00000004U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/8 */
#define LPUART_PRESCALER_DIV10 (0x00000005U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/10 */
#define LPUART_PRESCALER_DIV12 (0x00000006U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/12 */
#define LPUART_PRESCALER_DIV16 (0x00000007U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/16 */
#define LPUART_PRESCALER_DIV32 (0x00000008U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/32 */
#define LPUART_PRESCALER_DIV64 (0x00000009U) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/64 */
#define LPUART_PRESCALER_DIV128 (0x0000000AU) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/128 */
#define LPUART_PRESCALER_DIV256 (0x0000000BU) /**< Ԥ<><D4A4>Ƶʱ<C6B5><CAB1>fclk_pres = fclk/256 */
/* LPUART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD> */
#define LPUART_WORDLENGTH_8BITS USART_CR1_WL8BITS /**< 8-bits <20>ֳ<EFBFBD> */
#define LPUART_WORDLENGTH_9BITS USART_CR1_WL9BITS /**< 9-bits <20>ֳ<EFBFBD> */
/* LPUART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>żУ<C5BC><D0A3> */
#define LPUART_PARITY_NONE (0x00000000U) /**< <20><>У<EFBFBD><D0A3> */
#define LPUART_PARITY_EVEN USART_CR1_PEN /**< żУ<C5BC><D0A3> */
#define LPUART_PARITY_ODD (USART_CR1_PEN | USART_CR1_PTS) /**< <20><>У<EFBFBD><D0A3> */
/* LPUART <20><><EFBFBD><EFBFBD>ֹ֡ͣλ */
#define LPUART_STOPBITS_1 (0x00000000U) /**< 1bitֹͣλ */
#define LPUART_STOPBITS_2 USART_CR2_STOPBIT_2 /**< 2bitsֹͣλ */
/* LPUART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>С<EFBFBD><D0A1> */
#define LPUART_DATA_ORDER_LSBFIRST (0x00000000U) /**< <20><><EFBFBD><EFBFBD>Чλ<D0A7><CEBB><EFBFBD><EFBFBD> */
#define LPUART_DATA_ORDER_MSBFIRST USART_CR2_MSBFIRST /**< <20><><EFBFBD><EFBFBD>Чλ<D0A7><CEBB><EFBFBD><EFBFBD> */
/* LPUART <20><><EFBFBD><EFBFBD><EFBFBD>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD><EFBFBD>Χ */
#define LPUART_BRR_MIN (0x00000300U) /**< LPUART<52><54><EFBFBD><EFBFBD><EFBFBD>ʼĴ<CABC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ */
#define LPUART_BRR_MAX (0x000FFFFFU) /**< LPUART<52><54><EFBFBD><EFBFBD><EFBFBD>ʼĴ<CABC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
/* LPUART RS232Ӳ<32><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define LPUART_FLOWCONTROL_NONE (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><D8B9><EFBFBD> */
#define LPUART_FLOWCONTROL_RTS USART_CR3_RTSE /**< RTSʹ<53><CAB9> */
#define LPUART_FLOWCONTROL_CTS USART_CR3_CTSE /**< CTSʹ<53><CAB9> */
#define LPUART_FLOWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /**< RTS<54><53>CTSͬʱʹ<CAB1><CAB9> */
/* LPUART <20><><EFBFBD><EFBFBD><E4B7BD> */
#define LPUART_DIRECTION_NONE (0x00000000U) /**< δʹ<CEB4>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD> */
#define LPUART_DIRECTION_SEND USART_CR1_TE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define LPUART_DIRECTION_RECEIVE USART_CR1_RE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define LPUART_DIRECTION_SEND_RECEIVE (USART_CR1_TE |USART_CR1_RE) /**< <20><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ģʽ<C4A3><CABD>ʹ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
/* DMAģʽLPUART<52><54><EFBFBD><EFBFBD> */
#define LPUART_DMA_SEND_DISABLE (0x00000000U) /**< <20><>ֹDMAģʽLPUART<52><54><EFBFBD><EFBFBD> */
#define LPUART_DMA_SEND_ENABLE USART_CR3_DMAT /**< ʹ<><CAB9>DMAģʽLPUART<52><54><EFBFBD><EFBFBD> */
/* DMAģʽLPUART<52><54><EFBFBD><EFBFBD> */
#define LPUART_DMA_RECEIVE_DISABLE (0x00000000U) /**< <20><>ֹDMAģʽLPUART<52><54><EFBFBD><EFBFBD> */
#define LPUART_DMA_RECEIVE_ENABLE USART_CR3_DMAR /**< ʹ<><CAB9>DMAģʽLPUART<52><54><EFBFBD><EFBFBD> */
/* LPUART<52><54><EFBFBD>߰<EFBFBD>˫<EFBFBD><CBAB>ģʽ */
#define LPUART_HALF_DUPLEX_DISABLE (0x00000000U) /**< <20><>ֹLPUART<52><54><EFBFBD>߰<EFBFBD>˫<EFBFBD><CBAB>ģʽ */
#define LPUART_HALF_DUPLEX_ENABLE USART_CR3_HDEN /**< ʹ<><CAB9>LPUART<52><54><EFBFBD>߰<EFBFBD>˫<EFBFBD><CBAB>ģʽ */
/* LPUART Stop<6F>͹<EFBFBD><CDB9><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>Դѡ<D4B4><D1A1> */
#define LPUART_WAKEUP_ON_STARTBIT (0x00000000U) /**< <20><>ʼλ<CABC><CEBB><EFBFBD><EFBFBD><E2BBBD> */
#define LPUART_WAKEUP_ON_READDATA_NOTEMPTY USART_CR3_LPWKS /**< <20><><EFBFBD>յ<EFBFBD>һ֡<D2BB><D6A1><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD> */
/**
* @}
*/
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup LPUART_External_Functions LPUART External Functions
* @brief LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*
*/
/************************************************************************************************/
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_enable(LPUART_t *lpuartx)
{
lpuartx->CR1 |= (USART_CR1_UE);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_disable(LPUART_t *lpuartx)
{
lpuartx->CR1 &= (~USART_CR1_UE);
}
/**
* @brief LPUART У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param parity LPUART <EFBFBD><EFBFBD>żУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_PARITY_NONE
* @arg LPUART_PARITY_EVEN
* @arg LPUART_PARITY_ODD
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_parity(LPUART_t *lpuartx,uint32_t parity)
{
MODIFY_REG(lpuartx->CR1, USART_CR1_PTS | USART_CR1_PEN, parity);
}
/**
* @brief <EFBFBD><EFBFBD>ȡLPUART<EFBFBD><EFBFBD>żУ<EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t LPUART<EFBFBD><EFBFBD>żУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_PARITY_NONE
* @arg LPUART_PARITY_EVEN
* @arg LPUART_PARITY_ODD
*/
__STATIC_INLINE uint32_t std_lpuart_get_parity(LPUART_t *lpuartx)
{
return(lpuartx->CR1 & (USART_CR1_PTS | USART_CR1_PEN));
}
/**
* @brief LPUART <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param word_length LPUART <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_WORDLENGTH_8BITS
* @arg LPUART_WORDLENGTH_9BITS
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_word_length(LPUART_t *lpuartx, uint32_t word_length)
{
MODIFY_REG(lpuartx->CR1, USART_CR1_WL, word_length);
}
/**
* @brief <EFBFBD><EFBFBD>ȡLPUART<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t LPUART <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_WORDLENGTH_8BITS
* @arg LPUART_WORDLENGTH_9BITS
*/
__STATIC_INLINE uint32_t std_lpuart_get_word_length(LPUART_t *lpuartx)
{
return (lpuartx->CR1 & USART_CR1_WL);
}
/**
* @brief LPUART ֹͣλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param stopbits LPUART ֹͣλλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_STOPBITS_1
* @arg LPUART_STOPBITS_2
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_stopbits(LPUART_t *lpuartx, uint32_t stopbits)
{
MODIFY_REG(lpuartx->CR2, USART_CR2_STOPBIT, stopbits);
}
/**
* @brief <EFBFBD><EFBFBD>ȡLPUARTֹͣλ
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t LPUARTֹͣλλ<EFBFBD><EFBFBD>
* @arg LPUART_STOPBITS_1
* @arg LPUART_STOPBITS_2
*/
__STATIC_INLINE uint32_t std_lpuart_get_stopbits(LPUART_t *lpuartx)
{
return(lpuartx->CR2 & USART_CR2_STOPBIT);
}
/**
* @brief LPUART <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param data_order LPUART <EFBFBD>ַ<EFBFBD>֡<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_DATA_ORDER_LSBFIRST
* @arg LPUART_DATA_ORDER_MSBFIRST
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_data_order(LPUART_t *lpuartx, uint32_t data_order)
{
MODIFY_REG(lpuartx->CR2, USART_CR2_MSBFIRST, data_order);
}
/**
* @brief <EFBFBD><EFBFBD>ȡ LPUART <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t LPUART <EFBFBD>ַ<EFBFBD>֡<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_DATA_ORDER_LSBFIRST
* @arg LPUART_DATA_ORDER_MSBFIRST
*/
__STATIC_INLINE uint32_t std_lpuart_get_data_order(LPUART_t *lpuartx)
{
return(lpuartx->CR2 & USART_CR2_MSBFIRST);
}
/**
* @brief LPUART <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param direction <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_DIRECTION_NONE
* @arg LPUART_DIRECTION_SEND
* @arg LPUART_DIRECTION_RECEIVE
* @arg LPUART_DIRECTION_SEND_RECEIVE
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_transfer_direction(LPUART_t *lpuartx, uint32_t direction)
{
MODIFY_REG(lpuartx->CR1, USART_CR1_TE|USART_CR1_RE, direction);
}
/**
* @brief <EFBFBD><EFBFBD>ȡ LPUART <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_DIRECTION_NONE
* @arg LPUART_DIRECTION_SEND
* @arg LPUART_DIRECTION_RECEIVE
* @arg LPUART_DIRECTION_SEND_RECEIVE
*/
__STATIC_INLINE uint32_t std_lpuart_get_transfer_direction(LPUART_t *lpuartx)
{
return(lpuartx->CR1 & (USART_CR1_TE|USART_CR1_RE));
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>LPUART ƥ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param data_match ƥ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD> 8bits 0~0xFF
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_data_match(LPUART_t *lpuartx, uint32_t data_match)
{
MODIFY_REG(lpuartx->CR2, USART_CR2_LPUART_CMFD, (data_match << USART_CR2_LPUART_CMFD_POS));
}
/**
* @brief LPUART Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param prescaler_value LPUART Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg LPUART_PRESCALER_DIV1
* @arg LPUART_PRESCALER_DIV2
* @arg LPUART_PRESCALER_DIV4
* @arg ...
* @arg LPUART_PRESCALER_DIV256
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_kclk_prescaler(LPUART_t *lpuartx, uint32_t prescaler_value)
{
MODIFY_REG(lpuartx->PRESC, USART_PRESC_PRESCALER, prescaler_value);
}
/**
* @brief <EFBFBD><EFBFBD>ȡ LPUART Ԥ<EFBFBD><EFBFBD>Ƶֵ
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t LPUARTԤ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶֵ
*/
__STATIC_INLINE uint32_t std_lpuart_get_kclk_prescaler(LPUART_t *lpuartx)
{
return (uint32_t)(LPUART_PRESCALER_TABLE[(lpuartx->PRESC & USART_PRESC_PRESCALER)]);
}
/**
* @brief LPUART <EFBFBD>ӵ͹<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>Դѡ<EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param wakeup_method LPUART ͨ<EFBFBD><EFBFBD>LPWK<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD><EFBFBD>ź<EFBFBD>Դѡѡ<EFBFBD><EFBFBD>
* @arg LPUART_WAKEUP_ON_STARTBIT
* @arg LPUART_WAKEUP_ON_READDATA_NOTEMPTY
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_wakeup_method(LPUART_t *lpuartx, uint32_t wakeup_method)
{
MODIFY_REG(lpuartx->CR3, USART_CR3_LPWKS, wakeup_method);
}
/**
* @brief ʹ<EFBFBD><EFBFBD>LPUART Stopģʽ<EFBFBD>»<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_wakeup_enable(LPUART_t *lpuartx)
{
lpuartx->CR1 |= (USART_CR1_UEWK);
}
/**
* @brief <EFBFBD><EFBFBD>ֹLPUART Stopģʽ<EFBFBD>»<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_wakeup_disable(LPUART_t *lpuartx)
{
lpuartx->CR1 &= (~USART_CR1_UEWK);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_rx_enable(LPUART_t *lpuartx)
{
lpuartx->CR1 |= (USART_CR1_RE);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_rx_disable(LPUART_t *lpuartx)
{
lpuartx->CR1 &= (~USART_CR1_RE);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_tx_enable(LPUART_t *lpuartx)
{
lpuartx->CR1 |= (USART_CR1_TE);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_tx_disable(LPUART_t *lpuartx)
{
lpuartx->CR1 &= (~USART_CR1_TE);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART <EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_pin_swap_enable(LPUART_t *lpuartx)
{
lpuartx->CR2 |= (USART_CR2_SWAP);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART <EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_pin_swap_disable(LPUART_t *lpuartx)
{
lpuartx->CR2 &= (~USART_CR2_SWAP);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART RX<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_rx_level_invert_enable(LPUART_t *lpuartx)
{
lpuartx->CR2 |= (USART_CR2_RXIVC);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART RX<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_rx_level_invert_disable(LPUART_t *lpuartx)
{
lpuartx->CR2 &= (~USART_CR2_RXIVC);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART TX<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_tx_level_invert_enable(LPUART_t *lpuartx)
{
lpuartx->CR2 |= (USART_CR2_TXIVC);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART TX<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_tx_level_invert_disable(LPUART_t *lpuartx)
{
lpuartx->CR2 &= (~USART_CR2_TXIVC);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_data_invert_enable(LPUART_t *lpuartx)
{
lpuartx->CR2 |= (USART_CR2_DATAIVC);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART <EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_data_invert_disable(LPUART_t *lpuartx)
{
lpuartx->CR2 &= (~USART_CR2_DATAIVC);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART <EFBFBD><EFBFBD><EFBFBD>߰<EFBFBD>˫<EFBFBD><EFBFBD>ģʽ
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_half_duplex_enable(LPUART_t *lpuartx)
{
lpuartx->CR3 |= (USART_CR3_HDEN);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART <EFBFBD><EFBFBD><EFBFBD>߰<EFBFBD>˫<EFBFBD><EFBFBD>ģʽ
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_half_duplex_disable(LPUART_t *lpuartx)
{
lpuartx->CR3 &= (~USART_CR3_HDEN);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART DMAģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_dma_rx_enable(LPUART_t *lpuartx)
{
lpuartx->CR3 |= (USART_CR3_DMAR);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART DMAģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_dma_rx_disable(LPUART_t *lpuartx)
{
lpuartx->CR3 &= (~USART_CR3_DMAR);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART DMAģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_dma_tx_enable(LPUART_t *lpuartx)
{
lpuartx->CR3 |= (USART_CR3_DMAT);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART DMAģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_dma_tx_disable(LPUART_t *lpuartx)
{
lpuartx->CR3 &= (~USART_CR3_DMAT);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART <EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ֹDMA
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_dma_off_onrxerror_enable(LPUART_t *lpuartx)
{
lpuartx->CR3 |= (USART_CR3_DDRE);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART <EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ֹDMA
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_dma_off_onrxerror_disable(LPUART_t *lpuartx)
{
lpuartx->CR3 &= (~USART_CR3_DDRE);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART RTSӲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_hardflow_control_rts_enable(LPUART_t *lpuartx)
{
lpuartx->CR3 |= (USART_CR3_RTSE);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART RTSӲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_hardflow_control_rts_disable(LPUART_t *lpuartx)
{
lpuartx->CR3 &= (~USART_CR3_RTSE);
}
/**
* @brief LPUART Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hardflow Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ
* @arg LPUART_FLOWCONTROL_NONE
* @arg LPUART_FLOWCONTROL_RTS
* @arg LPUART_FLOWCONTROL_CTS
* @arg LPUART_FLOWCONTROL_RTS_CTS
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_hardflow_control(LPUART_t *lpuartx, uint32_t hardflow)
{
MODIFY_REG(lpuartx->CR3, USART_CR3_CTSE|USART_CR3_RTSE, hardflow);
}
/**
* @brief ʹ<EFBFBD><EFBFBD> LPUART CTSӲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_hardflow_control_cts_enable(LPUART_t *lpuartx)
{
lpuartx->CR3 |= (USART_CR3_CTSE);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ LPUART CTSӲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_hardflow_control_cts_disable(LPUART_t *lpuartx)
{
lpuartx->CR3 &= (~USART_CR3_CTSE);
}
/**
* @brief ʹ<EFBFBD><EFBFBD>LPUART CR1<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param interrupt LPUART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
* @arg LPUART_CR1_INTERRUPT_RXNE
* @arg LPUART_CR1_INTERRUPT_TC
* @arg LPUART_CR1_INTERRUPT_TXE
* @arg LPUART_CR1_INTERRUPT_PE
* @arg LPUART_CR1_INTERRUPT_CM
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_cr1_interrupt_enable(LPUART_t *lpuartx, uint32_t interrupt)
{
lpuartx->CR1 |= (interrupt);
}
/**
* @brief <EFBFBD><EFBFBD>ֹLPUART CR1<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param interrupt LPUART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
* @arg LPUART_CR1_INTERRUPT_RXNE
* @arg LPUART_CR1_INTERRUPT_TC
* @arg LPUART_CR1_INTERRUPT_TXE
* @arg LPUART_CR1_INTERRUPT_PE
* @arg LPUART_CR1_INTERRUPT_CM
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_cr1_interrupt_disable(LPUART_t *lpuartx, uint32_t interrupt)
{
lpuartx->CR1 &= (~interrupt);
}
/**
* @brief <EFBFBD><EFBFBD>ȡLPUART CR1<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param interrupt LPUART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
* @arg LPUART_CR1_INTERRUPT_RXNE
* @arg LPUART_CR1_INTERRUPT_TC
* @arg LPUART_CR1_INTERRUPT_TXE
* @arg LPUART_CR1_INTERRUPT_PE
* @arg LPUART_CR1_INTERRUPT_CM
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LPUART<EFBFBD>ж<EFBFBD>Դʹ<EFBFBD><EFBFBD>״̬
* @arg true: <EFBFBD><EFBFBD>ʾѡ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դʹ<EFBFBD><EFBFBD>
* @arg false: <EFBFBD><EFBFBD>ʾѡ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դδʹ<EFBFBD><EFBFBD>
*/
__STATIC_INLINE bool std_lpuart_cr1_get_interrupt_enable(LPUART_t *lpuartx, uint32_t interrupt)
{
return ((lpuartx->CR1 & (interrupt)) == (interrupt));
}
/**
* @brief ʹ<EFBFBD><EFBFBD>LPUART CR3<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param interrupt LPUART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
* @arg LPUART_CR3_INTERRUPT_ERR
* @arg LPUART_CR3_INTERRUPT_CTS
* @arg LPUART_CR3_INTERRUPT_LPWK
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_cr3_interrupt_enable(LPUART_t *lpuartx, uint32_t interrupt)
{
lpuartx->CR3 |= (interrupt);
}
/**
* @brief <EFBFBD><EFBFBD>ֹLPUART CR3<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param interrupt LPUART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
* @arg LPUART_CR3_INTERRUPT_ERR
* @arg LPUART_CR3_INTERRUPT_CTS
* @arg LPUART_CR3_INTERRUPT_LPWK
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_cr3_interrupt_disable(LPUART_t *lpuartx, uint32_t interrupt)
{
lpuartx->CR3 &= (~interrupt);
}
/**
* @brief <EFBFBD><EFBFBD>ȡLPUART CR3<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param interrupt ʹ<EFBFBD><EFBFBD>I2C<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
* @arg LPUART_CR3_INTERRUPT_ERR
* @arg LPUART_CR3_INTERRUPT_CTS
* @arg LPUART_CR3_INTERRUPT_LPWK
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LPUART<EFBFBD>ж<EFBFBD>Դʹ<EFBFBD><EFBFBD>״̬
* @arg true: <EFBFBD><EFBFBD>ʾѡ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դʹ<EFBFBD><EFBFBD>
* @arg false: <EFBFBD><EFBFBD>ʾѡ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դδʹ<EFBFBD><EFBFBD>
*/
__STATIC_INLINE bool std_lpuart_cr3_get_interrupt_enable(LPUART_t *lpuartx, uint32_t interrupt)
{
return ((lpuartx->CR3 & (interrupt)) == (interrupt));
}
/**
* @brief <EFBFBD><EFBFBD>ȡ LPUART <EFBFBD><EFBFBD>־״̬
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param flag LPUART<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>Ϣ
* @arg LPUART_FLAG_PE
* @arg LPUART_FLAG_FE
* @arg LPUART_FLAG_ORE
* @arg LPUART_FLAG_RXNE
* @arg LPUART_FLAG_TC
* @arg LPUART_FLAG_TXE
* @arg LPUART_FLAG_CTSIF
* @arg LPUART_FLAG_CTS
* @arg LPUART_FLAG_LPWKF
* @arg LPUART_FLAG_TEACK
* @arg LPUART_FLAG_REACK
* @arg LPUART_FLAG_BUSY
* @arg LPUART_FLAG_CM
* @arg LPUART_FLAG_LPWK
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>λ״̬
* @arg true<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʾָ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>־<EFBFBD><EFBFBD>λ
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾָ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>־δ<EFBFBD><EFBFBD>λ
*/
__STATIC_INLINE bool std_lpuart_get_flag(LPUART_t *lpuartx, uint32_t flag)
{
return ((lpuartx->ISR & flag) == flag);
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> LPUART ״̬<EFBFBD><EFBFBD>־
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param clear_flag LPUART<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>Ϣ
* @arg LPUART_CLEAR_PE
* @arg LPUART_CLEAR_FE
* @arg LPUART_CLEAR_ORE
* @arg LPUART_CLEAR_TC
* @arg LPUART_CLEAR_CTS
* @arg LPUART_CLEAR_CM
* @arg LPUART_CLEAR_LPWK
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_clear_flag(LPUART_t *lpuartx, uint32_t clear_flag)
{
lpuartx->ICR = (clear_flag);
}
/**
* @brief LPUART <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_request_tx_flush(LPUART_t *lpuartx)
{
lpuartx->RQR |= (USART_RQR_TXFLUQ);
}
/**
* @brief LPUART <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_request_rx_flush(LPUART_t *lpuartx)
{
lpuartx->RQR |= (USART_RQR_RXFLUQ);
}
/**
* @brief LPUART <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
__STATIC_INLINE uint32_t std_lpuart_rx_data_read(LPUART_t *lpuartx)
{
return (lpuartx->RDR & USART_RDR_RDR);
}
/**
* @brief LPUART д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param data <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_tx_data_write(LPUART_t *lpuartx, uint32_t data)
{
lpuartx->TDR = data;
}
/**
* @brief д<EFBFBD><EFBFBD>LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param brr_value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶֵ:0x300 ~ 0xFFFFF
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_lpuart_set_brr_value(LPUART_t *lpuartx, uint32_t brr_value)
{
lpuartx->BRR = brr_value;
}
/**
* @brief <EFBFBD><EFBFBD>ȡLPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
* @param lpuartx LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t LPUART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
__STATIC_INLINE uint32_t std_lpuart_get_brr_value(LPUART_t *lpuartx)
{
return (lpuartx->BRR & USART_BRR_LPUART);
}
/* LPUART <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD> */
void std_lpuart_deinit(LPUART_t *lpuartx);
std_status_t std_lpuart_init(LPUART_t *lpuartx, std_lpuart_init_t *lpuart_init_param);
std_status_t std_lpuart_set_baudrate(LPUART_t *lpuartx, uint32_t baudrate);
/* LPUART <20><EFBFBD><E1B9B9><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD> */
void std_lpuart_struct_init(std_lpuart_init_t *lpuart_init);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
/**
* @}
*/
/**
* @}
*/
#endif /* CIU32L051_STD_LPUART_H */