1387 lines
46 KiB
C
1387 lines
46 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file ciu32L051_std_usart.h
|
|||
|
* @author MCU Ecosystem Development Team
|
|||
|
* @brief USART STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD>ṩUSART<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_USART_H
|
|||
|
#define CIU32L051_STD_USART_H
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @addtogroup CIU32L051_STD_Driver
|
|||
|
* @{
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @defgroup USART USART
|
|||
|
* @brief ͨ<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 USART_Types USART Types
|
|||
|
* @brief USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
/**
|
|||
|
* @brief USART<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD>嶨<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint32_t direction; /**< USART <20><><EFBFBD><EFBFBD>ģʽ(<28><><EFBFBD>䷽<EFBFBD><E4B7BD>)
|
|||
|
@arg USART_DIRECTION_SEND ... */
|
|||
|
uint32_t over_sample; /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
@arg USART_OVERSAMPLE_16 ... */
|
|||
|
uint32_t baudrate; /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
uint32_t wordlength; /**< USART <20><><EFBFBD><EFBFBD>֡<EFBFBD>ֳ<EFBFBD>
|
|||
|
@arg USART_WORDLENGTH_8BITS ... */
|
|||
|
uint32_t stopbits; /**< USART <20><><EFBFBD><EFBFBD>ֹ֡ͣλ<D6B9><CEBB><EFBFBD><EFBFBD>
|
|||
|
@arg USART_STOPBITS_1 ... */
|
|||
|
uint32_t parity; /**< USART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>żУ<C5BC><D0A3>
|
|||
|
@arg USART_PARITY_NONE ... */
|
|||
|
uint32_t hardware_flow; /**< USART Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
@arg USART_FLOWCONTROL_NONE ... */
|
|||
|
}std_usart_init_t;
|
|||
|
|
|||
|
/**
|
|||
|
* @brief USARTͬ<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD>嶨<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint32_t sync_clk; /**< ָ<><D6B8>ͬ<EFBFBD><CDAC>ʱ<EFBFBD><CAB1>ģʽ
|
|||
|
@arg USART_CLOCK_ENABLE ... */
|
|||
|
uint32_t sync_clock_polarity; /**< ָ<><D6B8>ͬ<EFBFBD><CDAC>ʱ<EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>
|
|||
|
@arg USART_SYNC_POLARITY_LOW ... */
|
|||
|
uint32_t sync_clock_phase; /**< ָ<><D6B8>ͬ<EFBFBD><CDAC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>λ
|
|||
|
@arg USART_SYNC_PHASE_1EDGE ... */
|
|||
|
}std_usart_sync_clk_init_t;
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*--------------------------------------------define--------------------------------------------*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup USART_Constants USART Constants
|
|||
|
* @brief USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>弰<EFBFBD>궨<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
/* USART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD> */
|
|||
|
#define USART_WORDLENGTH_8BITS USART_CR1_WL8BITS /**< 8-bits <20>ֳ<EFBFBD> */
|
|||
|
#define USART_WORDLENGTH_9BITS USART_CR1_WL9BITS /**< 9-bits <20>ֳ<EFBFBD> */
|
|||
|
|
|||
|
|
|||
|
/* USART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>żУ<C5BC><D0A3> */
|
|||
|
#define USART_PARITY_NONE (0x00000000U) /**< <20><>У<EFBFBD><D0A3> */
|
|||
|
#define USART_PARITY_EVEN USART_CR1_PEN /**< żУ<C5BC><D0A3> */
|
|||
|
#define USART_PARITY_ODD (USART_CR1_PEN | USART_CR1_PTS) /**< <20><>У<EFBFBD><D0A3> */
|
|||
|
|
|||
|
/* USART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_OVERSAMPLE_16 (0x00000000U) /**< 16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_OVERSAMPLE_8 USART_CR1_OVS8 /**< 8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* USART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭģʽ<C4A3>˳<EFBFBD><CBB3><EFBFBD>ʽ */
|
|||
|
#define USART_MUTE_EXIT_IDLELINE (0x00000000U) /**< <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD> */
|
|||
|
#define USART_MUTE_EXIT_ADDRESSMARK USART_CR1_RXWKUP /**< <20><>ַƥ<D6B7>份<EFBFBD><E4BBBD> */
|
|||
|
|
|||
|
/* USART <20><><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>÷<EFBFBD>Χ */
|
|||
|
#define USART_BRR_MIN (0x00000010U) /**< USART<52><54><EFBFBD><EFBFBD><EFBFBD>ʼĴ<CABC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ */
|
|||
|
#define USART_BRR_MAX (0x0000FFFFU) /**< USART<52><54><EFBFBD><EFBFBD><EFBFBD>ʼĴ<CABC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
|||
|
|
|||
|
/* USART<52><54><EFBFBD><EFBFBD>ģʽ */
|
|||
|
#define USART_DIRECTION_NONE (0x00000000U) /**< δʹ<CEB4>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_DIRECTION_SEND USART_CR1_TE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ(<28><>ʹ<EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD>) */
|
|||
|
#define USART_DIRECTION_RECEIVE USART_CR1_RE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ(<28><>ʹ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD>) */
|
|||
|
#define USART_DIRECTION_SEND_RECEIVE (USART_CR1_TE |USART_CR1_RE) /**< <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>(ʹ<>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD>) */
|
|||
|
|
|||
|
/* USART ʱ<>ӿ<EFBFBD><D3BF>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ */
|
|||
|
#define USART_CLOCK_DISABLE (0x00000000U) /**< <20><>ֹUSARTʱ<54><CAB1> */
|
|||
|
#define USART_CLOCK_ENABLE USART_CR2_CLKEN /**< ʹ<><CAB9>USARTʱ<54><CAB1> */
|
|||
|
|
|||
|
/* USART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>С<EFBFBD><D0A1> */
|
|||
|
#define USART_DATA_ORDER_LSBFIRST (0x00000000U) /**< <20><><EFBFBD><EFBFBD>Чλ<D0A7><CEBB><EFBFBD><EFBFBD> */
|
|||
|
#define USART_DATA_ORDER_MSBFIRST USART_CR2_MSBFIRST /**< <20><><EFBFBD><EFBFBD>Чλ<D0A7><CEBB><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* USART ͬ<><CDAC>ʱ<EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD> */
|
|||
|
#define USART_SYNC_POLARITY_LOW (0x00000000U) /**< <20><><EFBFBD><EFBFBD>̬<EFBFBD><CCAC>ͬ<EFBFBD><CDAC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><C5B4>ڵ͵<DAB5>ƽ */
|
|||
|
#define USART_SYNC_POLARITY_HIGH USART_CR2_CPOL /**< <20><><EFBFBD><EFBFBD>̬<EFBFBD><CCAC>ͬ<EFBFBD><CDAC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><C5B4>ڸߵ<DAB8>ƽ */
|
|||
|
|
|||
|
/* USART ͬ<><CDAC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>λ */
|
|||
|
#define USART_SYNC_PHASE_1EDGE (0x00000000U) /**< ͬ<><CDAC>ʱ<EFBFBD>ӵĵ<D3B5>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ĵ<EFBFBD>1<EFBFBD><31>bit */
|
|||
|
#define USART_SYNC_PHASE_2EDGE USART_CR2_CPHA /**< ͬ<><CDAC>ʱ<EFBFBD>ӵĵ<D3B5>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ĵ<EFBFBD>1<EFBFBD><31>bit */
|
|||
|
|
|||
|
/* USART<52><54><EFBFBD>ѵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> */
|
|||
|
#define USART_DETECT_4BITS (0x00000000U) /**< 4-bits<74><73><EFBFBD>Ȼ<EFBFBD><C8BB>ѵ<EFBFBD>ַ */
|
|||
|
#define USART_DETECT_7BITS USART_CR2_ADDRM /**< 7-bits<74><73><EFBFBD>Ȼ<EFBFBD><C8BB>ѵ<EFBFBD>ַ */
|
|||
|
|
|||
|
/* USART <20><><EFBFBD><EFBFBD>ֹ֡ͣλ */
|
|||
|
#define USART_STOPBITS_0_5 USART_CR2_STOPBIT_0_5 /**< 0.5bitֹͣλ */
|
|||
|
#define USART_STOPBITS_1 USART_CR2_STOPBIT_1 /**< 1bitֹͣλ */
|
|||
|
#define USART_STOPBITS_1_5 USART_CR2_STOPBIT_1_5 /**< 1.5bitsֹͣλ */
|
|||
|
#define USART_STOPBITS_2 USART_CR2_STOPBIT_2 /**< 2bitsֹͣλ */
|
|||
|
|
|||
|
/* USART RS485 Driverͨ<72><CDA8>ģʽ */
|
|||
|
#define USART_DE_POLARITY_HIGH (0x00000000U) /**< Driver<65>źż<C5BA><C5BC>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD>Ч */
|
|||
|
#define USART_DE_POLARITY_LOW USART_CR3_DEP /**< Driver<65>źż<C5BA><C5BC>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD>Ч */
|
|||
|
|
|||
|
/* USART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_OVERRUN_ENABLE (0x00000000U) /**< <20><>ֹUSART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_OVERRUN_DISABLE USART_CR3_ORED /**< ʹ<><CAB9>USART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* USART IRDA <20><><EFBFBD><EFBFBD>ģʽ */
|
|||
|
#define USART_IRDA_NORMAL_MODE (0x00000000U) /**< ʹ<><CAB9>IRDA <20><><EFBFBD><EFBFBD>ģʽ */
|
|||
|
#define USART_IRDA_LOWPOWER_MODE USART_CR3_IRLP /**< ʹ<><CAB9>IRDA <20><EFBFBD><CDB9><EFBFBD>ģʽ */
|
|||
|
|
|||
|
/* USART LIN ģʽ <20>ж<EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ⳤ<EFBFBD><E2B3A4> */
|
|||
|
#define USART_LIN_BREAK_DETECT_10_BITS (0x00000000U) /**< LINģʽ<C4A3>ж<EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ⳤ<EFBFBD><E2B3A4> 10bits */
|
|||
|
#define USART_LIN_BREAK_DETECT_11_BITS USART_CR2_LBDL /**< LINģʽ<C4A3>ж<EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ⳤ<EFBFBD><E2B3A4> 11bits */
|
|||
|
|
|||
|
/* USART Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_FLOWCONTROL_NONE (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><D8B9><EFBFBD> */
|
|||
|
#define USART_FLOWCONTROL_RTS USART_CR3_RTSE /**< RTS<54><53><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_FLOWCONTROL_CTS USART_CR3_CTSE /**< CTS<54><53><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_FLOWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /**< RTS<54><53>CTS<54><53><EFBFBD><EFBFBD>ͬʱʹ<CAB1><CAB9> */
|
|||
|
|
|||
|
/* USART <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_SAMPLE_THREE_BIT (0x00000000U) /**< Three-bit<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_SAMPLE_ONE_BIT USART_CR3_OBS /**< One-bit<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/*USART<52>ж<EFBFBD>ʹ<EFBFBD><CAB9>λ */
|
|||
|
#define USART_CR1_INTERRUPT_IDLE USART_CR1_IDLEIE /**< USART <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR1_INTERRUPT_RXNE USART_CR1_RXNEIE /**< USART <20><><EFBFBD>ռĴ<D5BC><C4B4><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR1_INTERRUPT_TC USART_CR1_TCIE /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR1_INTERRUPT_TXE USART_CR1_TXEIE /**< USART <20><><EFBFBD>ͼĴ<CDBC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR1_INTERRUPT_PE USART_CR1_PEIE /**< USART <20><>żУ<C5BC><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR1_INTERRUPT_CM USART_CR1_CMIE /**< USART <20>ַ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR1_INTERRUPT_RTO USART_CR1_RTOIE /**< USART <20><><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR1_INTERRUPT_EB USART_CR1_EBIE /**< USART <20><>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR2_INTERRUPT_LBD USART_CR2_LBDIE /**< USART <20>ж<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR3_INTERRUPT_ERR USART_CR3_EIE /**< USART <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CR3_INTERRUPT_CTS USART_CR3_CTSIE /**< USART CTS<54>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
#define USART_CR3_INTERRUPT_TCBGT USART_CR3_TCBGTIE /**< USART <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
|
|||
|
|
|||
|
/* USART<52>жϱ<D0B6>־<EFBFBD><D6BE><EFBFBD><EFBFBD>λ(USART_ICR<43>Ĵ<EFBFBD><C4B4><EFBFBD>) */
|
|||
|
#define USART_CLEAR_PE USART_ICR_PECF /**< <20><>żУ<C5BC><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_FE USART_ICR_FECF /**< ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_NOISE USART_ICR_NOISECF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_ORE USART_ICR_ORECF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_IDLE USART_ICR_IDLECF /**< <20><>·<EFBFBD><C2B7><EFBFBD>б<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_TC USART_ICR_TCCF /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_TCBGT USART_ICR_TCBGTCF /**< <20>ڱ<EFBFBD><DAB1><EFBFBD>ʱ<EFBFBD><CAB1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_LBD USART_ICR_LBDCF /**< LBD<42><44>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_CTS USART_ICR_CTSCF /**< CTS<54><53>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_RTO USART_ICR_RTOCF /**< <20><><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_EB USART_ICR_EBCF /**< <20><>β<EFBFBD><CEB2>־<EFBFBD><D6BE><EFBFBD><EFBFBD> */
|
|||
|
#define USART_CLEAR_CM USART_ICR_CMCF /**< <20>ַ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* USART ״̬<D7B4><CCAC>־ */
|
|||
|
#define USART_FLAG_REACK USART_ISR_REACK /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ȷ<EFBFBD>ϱ<EFBFBD>־ */
|
|||
|
#define USART_FLAG_TEACK USART_ISR_TEACK /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ȷ<EFBFBD>ϱ<EFBFBD>־ */
|
|||
|
#define USART_FLAG_IDLE USART_ISR_IDLE /**< USART <20><><EFBFBD>б<EFBFBD>־ */
|
|||
|
#define USART_FLAG_RECEIVE_BUSY USART_ISR_BUSY /**< USART <20><><EFBFBD><EFBFBD>æ(<28><><EFBFBD>չܽ<D5B9><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>) */
|
|||
|
#define USART_FLAG_TXE USART_ISR_TXE /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD>ձ<EFBFBD>־ */
|
|||
|
#define USART_FLAG_TC USART_ISR_TC /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־ */
|
|||
|
#define USART_FLAG_TCBGT USART_ISR_TCBGT /**< USART <20>ڱ<EFBFBD><DAB1><EFBFBD>ʱ<EFBFBD><CAB1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־ */
|
|||
|
#define USART_FLAG_RXNE USART_ISR_RXNE /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD>ǿձ<C7BF>־ */
|
|||
|
#define USART_FLAG_LBD USART_ISR_LBD /**< USART <20>ж<EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ձ<EFBFBD>־ */
|
|||
|
#define USART_FLAG_CM USART_ISR_CMF /**< USART <20>ַ<EFBFBD>/<2F><>ַƥ<D6B7><C6A5><EFBFBD><EFBFBD>־ */
|
|||
|
#define USART_FLAG_BKSEND USART_ISR_BKSEND /**< USART <20>ж<EFBFBD><D0B6>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ͱ<EFBFBD>־ */
|
|||
|
#define USART_FLAG_CTS USART_ISR_CTS /**< USART CTS<54><53>־ */
|
|||
|
#define USART_FLAG_CTSIF USART_ISR_CTSIF /**< USART CTS<54><53>־<EFBFBD>жϱ<D0B6>־ */
|
|||
|
#define USART_FLAG_RTO USART_ISR_RTOF /**< USART <20><><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1>־ */
|
|||
|
#define USART_FLAG_EB USART_ISR_EBF /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־ */
|
|||
|
#define USART_FLAG_RWU USART_ISR_RWU /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭģʽ<C4A3><CABD>־ */
|
|||
|
#define USART_FLAG_ORE USART_ISR_ORE /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
#define USART_FLAG_NOISE USART_ISR_NOISE /**< USART <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
#define USART_FLAG_FE USART_ISR_FE /**< USART ֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
#define USART_FLAG_PE USART_ISR_PE /**< USART <20><>żУ<C5BC><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/*-------------------------------------------functions------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup USART_External_Functions USART External Functions
|
|||
|
* @brief USART<EFBFBD><EFBFBD><EFBFBD>⺯<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR1 |= (USART_CR1_UE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR1 &= (~USART_CR1_UE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param word_length USART <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg USART_WORDLENGTH_8BITS
|
|||
|
* @arg USART_WORDLENGTH_9BITS
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_word_length(USART_t *usartx, uint32_t word_length)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR1, USART_CR1_WL, word_length);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t USART <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg USART_WORDLENGTH_8BITS
|
|||
|
* @arg USART_WORDLENGTH_9BITS
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_get_word_length(USART_t *usartx)
|
|||
|
{
|
|||
|
return (usartx->CR1 & USART_CR1_WL);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD>żУ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param parity USART<EFBFBD><EFBFBD>żУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg USART_PARITY_NONE
|
|||
|
* @arg USART_PARITY_EVEN
|
|||
|
* @arg USART_PARITY_ODD
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_parity(USART_t *usartx,uint32_t parity)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR1,(USART_CR1_PTS | USART_CR1_PEN), parity);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART<EFBFBD><EFBFBD>żУ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t USART<EFBFBD><EFBFBD>żУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg USART_PARITY_NONE
|
|||
|
* @arg USART_PARITY_EVEN
|
|||
|
* @arg USART_PARITY_ODD
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_get_parity(USART_t *usartx )
|
|||
|
{
|
|||
|
return(usartx->CR1 & (USART_CR1_PTS | USART_CR1_PEN));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USARTֹͣλ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param stopbits USARTֹͣλλ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_STOPBITS_0_5
|
|||
|
* @arg USART_STOPBITS_1
|
|||
|
* @arg USART_STOPBITS_1_5
|
|||
|
* @arg USART_STOPBITS_2
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_stopbits(USART_t *usartx, uint32_t stopbits)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR2, USART_CR2_STOPBIT, stopbits);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSARTֹͣλ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t USARTֹͣλλ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_STOPBITS_0_5
|
|||
|
* @arg USART_STOPBITS_1
|
|||
|
* @arg USART_STOPBITS_1_5
|
|||
|
* @arg USART_STOPBITS_2
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_get_stopbits(USART_t *usartx)
|
|||
|
{
|
|||
|
return(usartx->CR2 & USART_CR2_STOPBIT);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param data_order USART <EFBFBD>ַ<EFBFBD>֡<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_DATA_ORDER_LSBFIRST
|
|||
|
* @arg USART_DATA_ORDER_MSBFIRST
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_data_order(USART_t *usartx, uint32_t data_order)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR2, USART_CR2_MSBFIRST, data_order);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t USART <EFBFBD>ַ<EFBFBD>֡<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_DATA_ORDER_LSBFIRST
|
|||
|
* @arg USART_DATA_ORDER_MSBFIRST
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_get_data_order(USART_t *usartx)
|
|||
|
{
|
|||
|
return(usartx->CR2 & USART_CR2_MSBFIRST);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param over_sample USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @arg USART_OVERSAMPLE_8
|
|||
|
* @arg USART_OVERSAMPLE_16
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_over_sample(USART_t *usartx,uint32_t over_sample)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR1,USART_CR1_OVS8, over_sample);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @arg USART_OVERSAMPLE_8
|
|||
|
* @arg USART_OVERSAMPLE_16
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_get_over_sample(USART_t *usartx)
|
|||
|
{
|
|||
|
return (usartx->CR1 & USART_CR1_OVS8);
|
|||
|
}
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param sample_method USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg USART_SAMPLE_THREE_BIT
|
|||
|
* @arg USART_SAMPLE_ONE_BIT
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_sample_method(USART_t *usartx,uint32_t sample_method)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR3,USART_CR3_OBS, sample_method);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD>䷽<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param direction USART<EFBFBD><EFBFBD><EFBFBD>䷽<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_DIRECTION_NONE
|
|||
|
* @arg USART_DIRECTION_SEND
|
|||
|
* @arg USART_DIRECTION_RECEIVE
|
|||
|
* @arg USART_DIRECTION_SEND_RECEIVE
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_transfer_direction(USART_t *usartx, uint32_t direction)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR1, USART_CR1_TE|USART_CR1_RE, direction);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ USART <EFBFBD><EFBFBD><EFBFBD>䷽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>䷽<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_DIRECTION_NONE
|
|||
|
* @arg USART_DIRECTION_SEND
|
|||
|
* @arg USART_DIRECTION_RECEIVE
|
|||
|
* @arg USART_DIRECTION_SEND_RECEIVE
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_get_transfer_direction(USART_t *usartx)
|
|||
|
{
|
|||
|
return(usartx->CR1 & (USART_CR1_TE|USART_CR1_RE));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_pin_swap_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 |= (USART_CR2_SWAP);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART<EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_pin_swap_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 &= (~USART_CR2_SWAP);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART RX<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_rx_level_invert_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 |= (USART_CR2_RXIVC);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART RX<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_rx_level_invert_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 &= (~USART_CR2_RXIVC);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART TX<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_tx_level_invert_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 |= (USART_CR2_TXIVC);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART TX<EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_tx_level_invert_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 &= (~USART_CR2_TXIVC);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_data_invert_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 |= (USART_CR2_DATAIVC);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART<EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_data_invert_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 &= (~USART_CR2_DATAIVC);
|
|||
|
}
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USARTʱ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_clk_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 |= (USART_CR2_CLKEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSARTʱ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_clk_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 &= (~USART_CR2_CLKEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USARTͬ<EFBFBD><EFBFBD>ʱ<EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param sync_clk_polarity USARTͬ<EFBFBD><EFBFBD>ʱ<EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg USART_SYNC_POLARITY_LOW
|
|||
|
* @arg USART_SYNC_POLARITY_HIGH
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_sync_clk_polarity(USART_t *usartx, uint32_t sync_clk_polarity)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR2, USART_CR2_CPOL, sync_clk_polarity);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USARTͬ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param sync_clk_phase USARTͬ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
* @arg USART_SYNC_PHASE_1EDGE
|
|||
|
* @arg USART_SYNC_PHASE_2EDGE
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_sync_clk_phase(USART_t *usartx, uint32_t sync_clk_phase)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR2, USART_CR2_CPHA, sync_clk_phase);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief USART<EFBFBD>Ӿ<EFBFBD>Ĭ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>ʽѡ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param mute_mode USART <EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>ʽ
|
|||
|
* @arg USART_MUTE_EXIT_IDLELINE
|
|||
|
* @arg USART_MUTE_EXIT_ADDRESSMARK
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_mute_exit_mode(USART_t *usartx,uint32_t mute_mode)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR1, USART_CR1_RXWKUP, mute_mode);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_multi_mode_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR1 |= (USART_CR1_RXMME);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_multi_mode_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR1 &= (~USART_CR1_RXMME);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD>ַƥ<EFBFBD><EFBFBD>ģʽѡ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param addr_mode USART <EFBFBD><EFBFBD>ַƥ<EFBFBD><EFBFBD>ģʽ
|
|||
|
* @arg USART_DETECT_4BITS
|
|||
|
* @arg USART_DETECT_7BITS
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_addr_match(USART_t *usartx,uint32_t addr_mode)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR2, USART_CR2_ADDRM, addr_mode);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD>ַƥ<EFBFBD><EFBFBD>ģʽ <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ַ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param local_address USART <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ַ 8bits
|
|||
|
* @note <EFBFBD><EFBFBD>ַƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD>ģʽ<EFBFBD>йأ<EFBFBD>ƥ<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>USART_DETECT_4BITS<EFBFBD><EFBFBD>USART_DETECT_7BITS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_local_address(USART_t *usartx, uint32_t local_address)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR2, USART_CR2_ADDR,(local_address << USART_CR2_ADDR_POS));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART ƥ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param data_match ƥ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD> 8bits 0~0xFF
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_data_match(USART_t *usartx, uint32_t data_match)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR2, USART_CR2_ADDR,(data_match << USART_CR2_ADDR_POS));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_smartcard_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_SCEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_smartcard_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_SCEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽNACK
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_smartcard_nack_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_SCNAK);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽNACK
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_smartcard_nack_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_SCNAK);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param retry_cnt <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0x00 ~ 0x07
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_smartcard_set_retry(USART_t *usartx, uint32_t retry_cnt)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR3, USART_CR3_SCRETRY_MASK, retry_cnt<<USART_CR3_SCRETRY_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USARTʱ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><EFBFBD><EFBFBD>IrDAģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param presc_value <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ<EFBFBD><EFBFBD>Ϊʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶֵ<EFBFBD><EFBFBD> IrDAģʽ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӵ<EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶֵ
|
|||
|
* @note <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ<EFBFBD><EFBFBD> presc_value ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0x01~ 0x01F, <EFBFBD><EFBFBD>ӦԤ<EFBFBD><EFBFBD>Ƶֵ 2 ~ 62
|
|||
|
* @note IrDAģʽ<EFBFBD><EFBFBD> presc_value ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0x01~ 0x0FF, <EFBFBD><EFBFBD>ӦԤ<EFBFBD><EFBFBD>Ƶֵ 1 ~ 255
|
|||
|
* @note presc_value <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>ֵΪ0
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_prescaler(USART_t *usartx, uint32_t presc_value)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->GTPR, USART_GTPR_PSV, presc_value);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶֵ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @note <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ<EFBFBD><EFBFBD> ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD>ֵΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ*2<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶֵ<EFBFBD><EFBFBD>Χ 2 ~ 62
|
|||
|
* @note IrDAģʽ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪIrDA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӵ<EFBFBD>ʵ<EFBFBD>ʷ<EFBFBD>Ƶֵ Ԥ<EFBFBD><EFBFBD>Ƶֵ<EFBFBD><EFBFBD>Χ 1 ~ 255
|
|||
|
* @retval uint32_t Ԥ<EFBFBD><EFBFBD>Ƶֵ
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_get_prescaler(USART_t *usartx)
|
|||
|
{
|
|||
|
return (usartx->GTPR & USART_GTPR_PSV);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>Ᵽ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param guard_time <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>Ᵽ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
* @note guard_time ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0x00~ 0x0FF, <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>1etu
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_smartcard_set_guard_time(USART_t *usartx, uint32_t guard_time)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->GTPR, USART_GTPR_GT, (guard_time<< USART_GTPR_GT_POS));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>Ᵽ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @note ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0x00~ 0x0FF, <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>1etu
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĶ<EFBFBD><EFBFBD>Ᵽ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_smartcard_get_guard_time(USART_t *usartx)
|
|||
|
{
|
|||
|
return ((usartx->GTPR & USART_GTPR_GT) >> USART_GTPR_GT_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽԤ<EFBFBD>ƽ<EFBFBD><EFBFBD>յĿ鳤<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param block_length Ԥ<EFBFBD>ƽ<EFBFBD><EFBFBD>յĿ鳤<EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0x00~ 0x0FF,
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_smartcard_set_block_length(USART_t *usartx, uint32_t block_length)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->RTO, USART_RTO_BLKN, block_length<<USART_RTO_BLKN_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART <EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>ģʽԤ<EFBFBD>ƽ<EFBFBD><EFBFBD>յĿ鳤<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Ԥ<EFBFBD>ƽ<EFBFBD><EFBFBD>տ鳤<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_smartcard_get_block_length(USART_t *usartx)
|
|||
|
{
|
|||
|
return ((usartx->RTO & USART_RTO_BLKN) >> USART_RTO_BLKN_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART IrDA ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_irda_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_IREN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART IrDA ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_irda_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_IREN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> USART IrDA <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param irda_mode USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg USART_IRDA_NORMAL_MODE
|
|||
|
* @arg USART_IRDA_LOWPOWER_MODE
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_irda_set_mode(USART_t *usartx, uint32_t irda_mode)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR3, USART_CR3_IRLP, irda_mode);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ USART IrDA <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t IrDA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
@arg USART_IRDA_NORMAL_MODE
|
|||
|
* @arg USART_IRDA_LOWPOWER_MODE
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_irda_get_mode(USART_t *usartx)
|
|||
|
{
|
|||
|
return(usartx->CR3 & USART_CR3_IRLP);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART LIN ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_lin_mode_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 |= (USART_CR2_LINEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART LIN ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_lin_mode_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 &= (~USART_CR2_LINEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART LIN ģʽ<EFBFBD>ж<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ⳤ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param break_length LIN ģʽ<EFBFBD>ж<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ⳤ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_LIN_BREAK_DETECT_10_BITS
|
|||
|
* @arg USART_LIN_BREAK_DETECT_11_BITS
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_lin_set_break_length(USART_t *usartx, uint32_t break_length)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR2, USART_CR2_LBDL, break_length);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART LIN ģʽ<EFBFBD>ж<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ⳤ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t LIN ģʽ<EFBFBD>ж<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ⳤ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_LIN_BREAK_DETECT_10_BITS
|
|||
|
* @arg USART_LIN_BREAK_DETECT_11_BITS
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_lin_get_break_length(USART_t *usartx)
|
|||
|
{
|
|||
|
return (usartx->CR2 & USART_CR2_LBDL);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD> USART <EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_receive_timeout_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 |= (USART_CR2_RTOEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> USART <EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_receive_timeout_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 &= (~USART_CR2_RTOEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART <EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱʱ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param timeout <EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱʱ<EFBFBD>䣬 ȡֵ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD>0x00 ~ 0x00FFFFFF <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_receive_timeout(USART_t *usartx, uint32_t timeout)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->RTO, USART_RTO_RTOV, timeout);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param hardflow Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ʒ<EFBFBD>ʽ
|
|||
|
* @arg USART_FLOWCONTROL_NONE
|
|||
|
* @arg USART_FLOWCONTROL_RTS
|
|||
|
* @arg USART_FLOWCONTROL_CTS
|
|||
|
* @arg USART_FLOWCONTROL_RTS_CTS
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_hardflow_control(USART_t *usartx, uint32_t hardflow)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR3, USART_CR3_CTSE|USART_CR3_RTSE, hardflow);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART RS485 DE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_de_control_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_DEM);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART RS485 DE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_de_control_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_DEM);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART RS485 DE<EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param setup_time DE<EFBFBD>źŽ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><EFBFBD>ΧΪ<EFBFBD><EFBFBD>0x00~0x1F
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_rs485_set_de_setup(USART_t *usartx,uint32_t setup_time)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR1, USART_CR1_DEST, setup_time<<USART_CR1_DEST_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART RS485 DE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źű<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param hold_time USART DE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źű<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><EFBFBD>ΧΪ<EFBFBD><EFBFBD>0x00~0x1F
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_rs485_set_de_hold(USART_t *usartx,uint32_t hold_time)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR1, USART_CR1_DEHT, hold_time<<USART_CR1_DEHT_POS);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief USART RS485 DE<EFBFBD>źż<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param polarity USART RS485 DE<EFBFBD>źż<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg USART_DE_POLARITY_HIGH
|
|||
|
* @arg USART_DE_POLARITY_LOW
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_de_control_polarity(USART_t *usartx, uint32_t polarity)
|
|||
|
{
|
|||
|
MODIFY_REG(usartx->CR3, USART_CR3_DEP, polarity);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD>߰<EFBFBD>˫<EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_half_duplex_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_HDEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART<EFBFBD><EFBFBD><EFBFBD>߰<EFBFBD>˫<EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_half_duplex_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_HDEN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART DMAģʽUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_dma_rx_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_DMAR);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART DMAģʽUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_dma_rx_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_DMAR);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART DMAģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_dma_tx_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_DMAT);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART DMAģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_dma_tx_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_DMAT);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ֹDMA
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_dma_off_onrxerror_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_DDRE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ֹDMA
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_dma_off_onrxerror_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_DDRE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_overrun_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 |= (USART_CR3_ORED);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_overrun_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~USART_CR3_ORED);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_request_tx_flush(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->RQR |= (USART_RQR_TXFLUQ);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_request_rx_flush(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->RQR |= (USART_RQR_RXFLUQ);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>֡
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_request_break_frame(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->RQR |= (USART_RQR_BKSENDQ);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뾲Ĭģʽ
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_request_enter_mutemode(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->RQR |= (USART_RQR_MUTEQ);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART CR1<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param interrupt USART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_CR1_INTERRUPT_IDLE
|
|||
|
* @arg USART_CR1_INTERRUPT_RXNE
|
|||
|
* @arg USART_CR1_INTERRUPT_TC
|
|||
|
* @arg USART_CR1_INTERRUPT_TXE
|
|||
|
* @arg USART_CR1_INTERRUPT_PE
|
|||
|
* @arg USART_CR1_INTERRUPT_CM
|
|||
|
* @arg USART_CR1_INTERRUPT_RTO
|
|||
|
* @arg USART_CR1_INTERRUPT_EB
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_cr1_interrupt_enable(USART_t *usartx, uint32_t interrupt)
|
|||
|
{
|
|||
|
usartx->CR1 |= (interrupt);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART CR1<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param interrupt USART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_CR1_INTERRUPT_IDLE
|
|||
|
* @arg USART_CR1_INTERRUPT_RXNE
|
|||
|
* @arg USART_CR1_INTERRUPT_TC
|
|||
|
* @arg USART_CR1_INTERRUPT_TXE
|
|||
|
* @arg USART_CR1_INTERRUPT_PE
|
|||
|
* @arg USART_CR1_INTERRUPT_CM
|
|||
|
* @arg USART_CR1_INTERRUPT_RTO
|
|||
|
* @arg USART_CR1_INTERRUPT_EB
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_cr1_interrupt_disable(USART_t *usartx, uint32_t interrupt)
|
|||
|
{
|
|||
|
usartx->CR1 &= (~interrupt);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART CR1<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param interrupt USART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_CR1_INTERRUPT_IDLE
|
|||
|
* @arg USART_CR1_INTERRUPT_RXNE
|
|||
|
* @arg USART_CR1_INTERRUPT_TC
|
|||
|
* @arg USART_CR1_INTERRUPT_TXE
|
|||
|
* @arg USART_CR1_INTERRUPT_PE
|
|||
|
* @arg USART_CR1_INTERRUPT_CM
|
|||
|
* @arg USART_CR1_INTERRUPT_RTO
|
|||
|
* @arg USART_CR1_INTERRUPT_EB
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<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_usart_get_cr1_interrupt_enable(USART_t *usartx, uint32_t interrupt)
|
|||
|
{
|
|||
|
return ((usartx->CR1 & (interrupt)) == (interrupt));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART LIN ģʽ<EFBFBD>ж<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_lin_break_detection_interrupt_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 |= USART_CR2_INTERRUPT_LBD;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART LIN ģʽ<EFBFBD>ж<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_lin_break_detection_interrupt_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR2 &= (~USART_CR2_INTERRUPT_LBD);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART LIN ģʽ<EFBFBD>ж<EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<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_usart_lin_get_break_interrupt_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
return ((usartx->CR2 & (USART_CR2_INTERRUPT_LBD)) == (USART_CR2_INTERRUPT_LBD));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART CR3<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param interrupt USART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_CR3_INTERRUPT_ERR
|
|||
|
* @arg USART_CR3_INTERRUPT_CTS
|
|||
|
* @arg USART_CR3_INTERRUPT_TCBGT
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_cr3_interrupt_enable(USART_t *usartx, uint32_t interrupt)
|
|||
|
{
|
|||
|
usartx->CR3 |= (interrupt);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART CR3<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param interrupt USART<EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_CR3_INTERRUPT_ERR
|
|||
|
* @arg USART_CR3_INTERRUPT_CTS
|
|||
|
* @arg USART_CR3_INTERRUPT_TCBGT
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_cr3_interrupt_disable(USART_t *usartx, uint32_t interrupt)
|
|||
|
{
|
|||
|
usartx->CR3 &= (~interrupt);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART CR3<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param interrupt ʹ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դѡ<EFBFBD><EFBFBD>
|
|||
|
* @arg USART_CR3_INTERRUPT_ERR
|
|||
|
* @arg USART_CR3_INTERRUPT_CTS
|
|||
|
* @arg USART_CR3_INTERRUPT_TCBGT
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<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_usart_get_cr3_interrupt_enable(USART_t *usartx, uint32_t interrupt)
|
|||
|
{
|
|||
|
return ((usartx->CR3 & (interrupt)) == (interrupt));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART<EFBFBD><EFBFBD>־
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param flag USART<EFBFBD><EFBFBD>־
|
|||
|
* @arg USART_FLAG_REACK
|
|||
|
* @arg USART_FLAG_TEACK
|
|||
|
* @arg USART_FLAG_IDLE
|
|||
|
* @arg USART_FLAG_RECEIVE_BUSY
|
|||
|
* @arg USART_FLAG_TXE
|
|||
|
* @arg USART_FLAG_TC
|
|||
|
* @arg USART_FLAG_TCBGT
|
|||
|
* @arg USART_FLAG_RXNE
|
|||
|
* @arg USART_FLAG_LBD
|
|||
|
* @arg USART_FLAG_CM
|
|||
|
* @arg USART_FLAG_BKSEND
|
|||
|
* @arg USART_FLAG_CTS
|
|||
|
* @arg USART_FLAG_CTSIF
|
|||
|
* @arg USART_FLAG_RTO
|
|||
|
* @arg USART_FLAG_EB
|
|||
|
* @arg USART_FLAG_RWU
|
|||
|
* @arg USART_FLAG_ORE
|
|||
|
* @arg USART_FLAG_NOISE
|
|||
|
* @arg USART_FLAG_FE
|
|||
|
* @arg USART_FLAG_PE
|
|||
|
* @retval bool USART<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @arg true ״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg flase ״̬δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_usart_get_flag(USART_t *usartx,uint32_t flag)
|
|||
|
{
|
|||
|
return ((usartx->ISR & (flag)) == (flag));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD>־
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param clear_flag USART<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>Ϣ
|
|||
|
* @arg USART_CLEAR_PE
|
|||
|
* @arg USART_CLEAR_FE
|
|||
|
* @arg USART_CLEAR_NOISE
|
|||
|
* @arg USART_CLEAR_ORE
|
|||
|
* @arg USART_CLEAR_IDLE
|
|||
|
* @arg USART_CLEAR_TC
|
|||
|
* @arg USART_CLEAR_TCBGT
|
|||
|
* @arg USART_CLEAR_LBD
|
|||
|
* @arg USART_CLEAR_CTS
|
|||
|
* @arg USART_CLEAR_RTO
|
|||
|
* @arg USART_CLEAR_EB
|
|||
|
* @arg USART_CLEAR_CM
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_clear_flag(USART_t *usartx, uint32_t clear_flag)
|
|||
|
{
|
|||
|
usartx->ICR = (clear_flag);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_rx_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR1 |= (USART_CR1_RE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_rx_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR1 &= (~USART_CR1_RE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_tx_enable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR1 |= (USART_CR1_TE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_tx_disable(USART_t *usartx)
|
|||
|
{
|
|||
|
usartx->CR1 &= (~USART_CR1_TE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t USART<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_rx_read_data(USART_t *usartx)
|
|||
|
{
|
|||
|
return (usartx->RDR & USART_RDR_RDR);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief д<EFBFBD><EFBFBD>USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param data_value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_tx_write_data(USART_t *usartx, uint32_t data_value)
|
|||
|
{
|
|||
|
usartx->TDR = data_value;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief д<EFBFBD><EFBFBD>USART <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param brr_value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶֵ <EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD> 0x10 ~ 0xFFFF
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_usart_set_brr_value(USART_t *usartx, uint32_t brr_value)
|
|||
|
{
|
|||
|
usartx->BRR = brr_value;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡUSART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param usartx USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t USART<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_usart_get_brr_value(USART_t *usartx)
|
|||
|
{
|
|||
|
return (usartx->BRR & USART_BRR_BRR);
|
|||
|
}
|
|||
|
|
|||
|
std_status_t std_usart_init(USART_t *usartx,std_usart_init_t *usart_init_param);
|
|||
|
void std_usart_deinit(USART_t *usartx);
|
|||
|
void std_usart_struct_init(std_usart_init_t *usart_init_struct);
|
|||
|
void std_usart_sync_clk_init(USART_t *usartx,std_usart_sync_clk_init_t *usart_sync_clock_init_param);
|
|||
|
void std_usart_sync_clk_struct_init(std_usart_sync_clk_init_t *usart_sync_clock_init_struct);
|
|||
|
std_status_t std_usart_baudrate_config(USART_t *usartx, uint32_t baudrate);
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#endif /* CIU32L051_STD_USART_H */
|
|||
|
|