#ifndef HC32L1XX_LL_LPUART_H_
#define HC32L1XX_LL_LPUART_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "hc32l1xx.h"
#include "hc32l1xx_ll_bus.h"
#include "hc32l1xx_ll_rcc.h"
///
#define LL_LPUSART_DIRECTION_TX LPUSART_SCON_REN_TX
#define LL_LPUSART_DIRECTION_TX_RX USART_SCON_REN_TX_RX
#define LL_LPUSART_DATAWIDTH_8B 0x00000000U
#define LL_LPUSART_STOPBITS_1 LPUSART_SCON_STOPBIT_1BIT
#define LL_LPUSART_STOPBITS_1_5 LPUSART_SCON_STOPBIT_1BIT5
#define LL_LPUSART_STOPBITS_2 LPUSART_SCON_STOPBIT_2BIT
#define LL_LPUSART_PARITY_NONE LPUSART_SCON_B8CONT_NONE
#define LL_LPUSART_PARITY_EVEN LPUSART_SCON_B8CONT_EVEN
#define LL_LPUSART_PARITY_ODD LPUSART_SCON_B8CONT_ODD
#define LL_LPUSART_HWCONTROL_NONE 0x00000000U
#define LL_LPUSART_HWCONTROL_RTS LPUSART_SCON_RTSEN
#define LL_LPUSART_HWCONTROL_CTS LPUSART_SCON_CTSEN
#define LL_LPUSART_HWCONTROL_RTS_CTS (LPUSART_SCON_RTSEN | LPUSART_SCON_CTSEN)
#define LL_LPUSART_OVERSAMPLING1_16 LPUSART_SCON_OVER1_16
#define LL_LPUSART_OVERSAMPLING1_8 LPUSART_SCON_OVER1_8
#define LL_LPUSART_OVERSAMPLING1_4 LPUSART_SCON_OVER1_4
#define LL_LPUSART_OVERSAMPLING2_32 LPUSART_SCON_OVER2_32
#define LL_LPUSART_OVERSAMPLING2_16 LPUSART_SCON_OVER2_16
#define LL_LPUSART_OVERSAMPLING2_8 LPUSART_SCON_OVER2_8
#define LL_LPUSART_CLK_SOURCE_PCLK LPUSART_SCON_SCLK_PCLK
#define LL_LPUSART_CLK_SOURCE_XTL LPUSART_SCON_SCLK_XTL
#define LL_LPUSART_CLK_SOURCE_RCL LPUSART_SCON_SCLK_RCL
///
//函 数:
//功 能:串口使能
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_Enable(LPUSART_TypeDef* LPUSARTx)
{
//SET_BIT(LPUSARTx->CR1, LPUSART_CR1_UE);
}
///
//函 数:
//功 能:串口不使能
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_Disable(LPUSART_TypeDef* LPUSARTx)
{
//CLEAR_BIT(LPUSARTx->CR1, LPUSART_CR1_UE);
}
///
//函 数:
//功 能:校验串口是否使能
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabled(LPUSART_TypeDef* LPUSARTx)
{
//return (READ_BIT(LPUSARTx->CR1, LPUSART_CR1_UE) == (LPUSART_CR1_UE));
return 0;
}
///
//函 数:
//功 能:使能接收
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_EnableDirectionRx(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_REN);
}
///
//函 数:
//功 能:不使能接收
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_DisableDirectionRx(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_REN);
}
///
//函 数:
//功 能:设置传输方向
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_SetTransferDirection(LPUSART_TypeDef* LPUSARTx, uint32_t TransferDirection)
{
MODIFY_REG(LPUSARTx->SCON, LPUSART_SCON_REN, TransferDirection);
}
///
//函 数:
//功 能:获取传输方向的配置
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_GetTransferDirection(LPUSART_TypeDef* LPUSARTx)
{
return (uint32_t)(READ_BIT(LPUSARTx->SCON, LPUSART_SCON_REN));
}
///
//函 数:
//功 能:设置校验位
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_SetParity(LPUSART_TypeDef* LPUSARTx, uint32_t Parity)
{
MODIFY_REG(LPUSARTx->SCON, LPUSART_SCON_B8CONT, Parity);
}
///
//函 数:
//功 能:获取校验位
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_GetParity(LPUSART_TypeDef* LPUSARTx)
{
return (uint32_t)(READ_BIT(LPUSARTx->SCON, LPUSART_SCON_B8CONT));
}
///
//函 数:
//功 能:设置数据宽度
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_SetDataWidth(LPUSART_TypeDef* LPUSARTx, uint32_t DataWidth)
{
//MODIFY_REG(LPUSARTx->CR1, LPUSART_CR1_M, DataWidth);
}
///
//函 数:
//功 能:获取数据宽度
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_GetDataWidth(LPUSART_TypeDef* LPUSARTx)
{
//return (uint32_t)(READ_BIT(LPUSARTx->CR1, LPUSART_CR1_M));
return 0;
}
///
//函 数:
//功 能:设置停止位
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_SetStopBitsLength(LPUSART_TypeDef* LPUSARTx, uint32_t StopBits)
{
MODIFY_REG(LPUSARTx->SCON, LPUSART_SCON_STOPBIT, StopBits);
}
///
//函 数:
//功 能:串口使能
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_GetStopBitsLength(LPUSART_TypeDef* LPUSARTx)
{
return (uint32_t)(READ_BIT(LPUSARTx->SCON, LPUSART_SCON_STOPBIT));
}
///
//函 数:
//功 能:串口使能
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_ConfigAsyncMode(LPUSART_TypeDef* LPUSARTx)
{
}
///
//函 数:
//功 能:串口使能
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_ConfigSyncMode(LPUSART_TypeDef* LPUSARTx)
{
}
///
//函 数:
//功 能:奇偶校验错误中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsActiveFlag_PE(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SR, LPUSART_SR_PE) == (LPUSART_SR_PE));
}
///
//函 数:
//功 能:CTS中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsActiveFlag_CTS(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SR, LPUSART_SR_CTSIF) == (LPUSART_SR_CTSIF));
}
///
//函 数:
//功 能:帧错误中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsActiveFlag_FE(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SR, LPUSART_SR_FE) == (LPUSART_SR_FE));
}
///
//函 数:
//功 能:接收完成中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsActiveFlag_RXNE(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SR, LPUSART_SR_RC) == (LPUSART_SR_RC));
}
///
//函 数:
//功 能:发送完成中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsActiveFlag_TC(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SR, LPUSART_SR_TC) == (LPUSART_SR_TC));
}
///
//函 数:
//功 能:发送寄存器空中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsActiveFlag_TXE(LPUSART_TypeDef* LPUSARTx)
{
return (uint32_t)(READ_BIT(LPUSARTx->SR, LPUSART_SR_TXE) == (LPUSART_SR_TXE));
}
///
//函 数:
//功 能:清除奇偶校验中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_ClearFlag_PE(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->CSR, LPUSART_CSR_PE);
}
///
//函 数:
//功 能:清除CTS中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_ClearFlag_CTS(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->CSR, LPUSART_CSR_CTSIF);
}
///
//函 数:
//功 能:清除帧错误中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_ClearFlag_FE(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->CSR, LPUSART_CSR_FE);
}
///
//函 数:
//功 能:清除发送完成中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_ClearFlag_TC(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->CSR, LPUSART_CSR_TC);
}
///
//函 数:
//功 能:清除接收完成中断标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_ClearFlag_RXNE(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->CSR, LPUSART_CSR_RC);
}
///
//函 数:
//功 能:使能接收完成中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_EnableIT_RXNE(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_RCIE);
}
///
//函 数:
//功 能:使能发送完成中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_EnableIT_TC(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_TCIE);
}
///
//函 数:
//功 能:使能发送空中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_EnableIT_TXE(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_TXEIE);
}
///
//函 数:
//功 能:使能奇偶校验错误中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_EnableIT_PE(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_PEIE);
}
///
//函 数:
//功 能:使能帧错误中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_EnableIT_CTS(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_CTSIE);
}
///
//函 数:
//功 能:使能帧错误中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_EnableIT_FE(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_FEIE);
}
///
//函 数:
//功 能:不使能接收完成中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_DisableIT_RXNE(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_RCIE);
}
///
//函 数:
//功 能:不使能发送完成中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_DisableIT_TC(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_TCIE);
}
///
//函 数:
//功 能:不使能发送空中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_DisableIT_TXE(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_TXEIE);
}
///
//函 数:
//功 能:不使能奇偶校验错误中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_DisableIT_PE(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_PEIE);
}
///
//函 数:
//功 能:不使能CTS中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_DisableIT_CTS(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_CTSIE);
}
///
//函 数:
//功 能:不使能帧错误中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_DisableIT_FE(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_FEIE);
}
///
//函 数:
//功 能:校验是否使能接收完成中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabledIT_RXNE(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SCON, LPUSART_SCON_RCIE) == (LPUSART_SCON_RCIE));
}
///
//函 数:
//功 能:校验是否使能发送完成中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabledIT_TC(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SCON, LPUSART_SCON_TCIE) == (LPUSART_SCON_TCIE));
}
///
//函 数:
//功 能:校验是否使能发送空中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabledIT_TXE(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SCON, LPUSART_SCON_TXEIE) == (LPUSART_SCON_TXEIE));
}
///
//函 数:
//功 能:校验是否使能奇偶校验错误中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabledIT_PE(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SCON, LPUSART_SCON_PEIE) == (LPUSART_SCON_PEIE));
}
///
//函 数:
//功 能:校验是否使能CTS中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabledIT_CTS(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SCON, LPUSART_SCON_CTSIE) == (LPUSART_SCON_CTSIE));
}
///
//函 数:
//功 能:校验是否使能帧错误中断
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabledIT_FE(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SCON, LPUSART_SCON_FEIE) == (LPUSART_SCON_FEIE));
}
///
//函 数:
//功 能:使能接收DMA
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_Enable_DMAReq_RX(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_DMARXEN);
}
///
//函 数:
//功 能:不使能接收DMA
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_Disable_DMAReq_RX(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_DMARXEN);
}
///
//函 数:
//功 能:校验是否使能接收DMA
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabled_DMAReq_RX(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SCON, LPUSART_SCON_DMARXEN) == (LPUSART_SCON_DMARXEN));
}
///
//函 数:
//功 能:使能发送DMA
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_Enable_DMAReq_TX(LPUSART_TypeDef* LPUSARTx)
{
SET_BIT(LPUSARTx->SCON, LPUSART_SCON_DMATXEN);
}
///
//函 数:
//功 能:不使能发送DMA
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_Disable_DMAReq_TX(LPUSART_TypeDef* LPUSARTx)
{
CLEAR_BIT(LPUSARTx->SCON, LPUSART_SCON_DMATXEN);
}
///
//函 数:
//功 能:校验是否使能发送DMA
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_IsEnabled_DMAReq_TX(LPUSART_TypeDef* LPUSARTx)
{
return (READ_BIT(LPUSARTx->SCON, LPUSART_SCON_DMATXEN) == (LPUSART_SCON_DMATXEN));
}
///
//函 数:
//功 能:DMA获取寄存器地址
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_DMA_GetRegAddr(LPUSART_TypeDef* LPUSARTx)
{
return ((uint32_t) & (LPUSARTx->SBUF));
}
///
//函 数:
//功 能:接收8BIT数据
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint8_t LL_LPUSART_ReceiveData8(LPUSART_TypeDef* LPUSARTx)
{
return (uint8_t)(LPUSARTx->SBUF);
}
///
//函 数:
//功 能:发送8BIT数据
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_TransmitData8(LPUSART_TypeDef* LPUSARTx, uint8_t Value)
{
LPUSARTx->SBUF = Value;
}
///
//函 数:
//功 能: 设置低功耗串口的传输时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_LPUSART_SetClockSource(LPUSART_TypeDef* LPUSARTx, uint32_t ClockSource)
{
MODIFY_REG(LPUSARTx->SCON, LPUSART_SCON_SCLK, ClockSource);
}
///
//函 数:
//功 能: 获取低功耗串口传输时钟设置
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_LPUSART_GetClockSource(LPUSART_TypeDef* LPUSARTx)
{
return (uint32_t)READ_BIT(LPUSARTx->SCON, LPUSART_SCON_SCLK);
}
//===结构体定义
typedef struct
{
uint32_t BaudRate;
uint32_t DataWidth;
uint32_t StopBits;
uint32_t Parity;
uint32_t TransferDirection;
uint32_t HardwareFlowControl;
uint32_t OverSampling;
uint32_t SclkFrequency; //---时钟频率
uint32_t SclkSource; //---时钟远模式
} LL_LPUSART_InitTypeDef;
//===函数定义
uint8_t LL_LPUSART_DeInit(LPUSART_TypeDef* LPUSARTx);
void LL_LPUSART_StructInit(LL_LPUSART_InitTypeDef* LPUSART_InitStruct);
uint8_t LL_LPUSART_Init(LPUSART_TypeDef* LPUSARTx, LL_LPUSART_InitTypeDef* LPUSART_InitStruct);
///
#ifdef __cplusplus
}
#endif
#endif /* HC32L1XX_LL_UART_H */
#include "hc32l1xx_ll_lpusart.h"
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
uint8_t LL_LPUSART_DeInit(LPUSART_TypeDef* LPUSARTx)
{
#ifdef LPUART0
if (LPUSARTx == LPUART0)
{
LL_PER0_GRP1_ForceReset(LL_PER0_GRP1_PERIPH_LPUART0);
LL_PER0_GRP1_ReleaseReset(LL_PER0_GRP1_PERIPH_LPUART0);
return 0;
}
#endif
#ifdef LPUART1
if (LPUSARTx == LPUART1)
{
LL_PER0_GRP1_ForceReset(LL_PER0_GRP1_PERIPH_LPUART1);
LL_PER0_GRP1_ReleaseReset(LL_PER0_GRP1_PERIPH_LPUART1);
return 0;
}
#endif
return 0;
}
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
void LL_LPUSART_StructInit(LL_LPUSART_InitTypeDef* LPUSART_InitStruct)
{
//---波特率
LPUSART_InitStruct->BaudRate = 9600;
LPUSART_InitStruct->DataWidth = LL_LPUSART_DATAWIDTH_8B;
LPUSART_InitStruct->StopBits = LL_LPUSART_STOPBITS_1;
LPUSART_InitStruct->Parity = LL_LPUSART_PARITY_NONE;
LPUSART_InitStruct->TransferDirection = LL_LPUSART_DIRECTION_TX_RX;
LPUSART_InitStruct->HardwareFlowControl = LL_LPUSART_HWCONTROL_NONE;
LPUSART_InitStruct->OverSampling = LL_LPUSART_OVERSAMPLING1_16;
LPUSART_InitStruct->SclkFrequency = LSI_VALUE;
LPUSART_InitStruct->SclkSource = LL_LPUSART_CLK_SOURCE_RCL;
}
///
//函 数:
//功 能: 初始化串口,只支持HC32的串口模式1和模式3
//输入参 数:
//输出参 数:
//说 明:
//
uint8_t LL_LPUSART_Init(LPUSART_TypeDef* LPUSARTx, LL_LPUSART_InitTypeDef* LPUSART_InitStruct)
{
uint32_t scon = 0;
double scnt = 0.0f;
//---硬件流控制
scon |= LPUSART_InitStruct->HardwareFlowControl;
//---停止位
scon |= LPUSART_InitStruct->StopBits;
//---过采样率
scon |= LPUSART_InitStruct->OverSampling;
//---工作模式1和3,工作模式1可以无校验位
if (LPUSART_InitStruct->Parity == LL_LPUSART_PARITY_NONE)
{
//---工作模式为模式1
scon |= LPUSART_SCON_SM_MODE1;
}
else
{
//---工作模式为模式3
scon |= LPUSART_SCON_SM_MODE3;
}
//---收发控制
scon |= LPUSART_InitStruct->TransferDirection;
//---奇偶校验
scon |= LPUSART_InitStruct->Parity;
//---SCLK的时钟来源
scon |= LPUSART_InitStruct->SclkSource;
//---将数据写入寄存器器
WRITE_REG(LPUSARTx->SCON, scon);
//---设置波特率
if (LPUSART_InitStruct->OverSampling == LL_LPUSART_OVERSAMPLING1_16)
{
scon = 16;
}
else if (LPUSART_InitStruct->OverSampling == LL_LPUSART_OVERSAMPLING1_8)
{
scon = 8;
}
else
{
scon = 4;
}
//---计算波特率
scnt = (double)(LPUSART_InitStruct->SclkFrequency) / scon;
scnt /= LPUSART_InitStruct->BaudRate;
//---将数据写入寄存器
WRITE_REG(LPUSARTx->SCNT, (uint16_t)(float)(scnt + 0.5f));
return 0;
}
05-21
3583
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-11
950
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
03-24
1672
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-04
9072
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)