CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Include/ciu32l051_std_usart.h

1387 lines
46 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/************************************************************************************************/
/**
* @file ciu32L051_std_usart.h
* @author MCU Ecosystem Development Team
* @brief USART STD库驱动头文件。
* 提供USART相关的STD库操作函数声明、数据类型以及常量的定义。
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/*避免头文件重复引用*/
#ifndef CIU32L051_STD_USART_H
#define CIU32L051_STD_USART_H
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @defgroup USART USART
* @brief 通用同步/异步收发器的STD库驱动
* @{
*/
/************************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32L051_std_common.h"
/*-----------------------------------------type define------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup USART_Types USART Types
* @brief USART数据类型定义
* @{
*
*/
/************************************************************************************************/
/**
* @brief USART初始化配置结构体定义
*/
typedef struct
{
uint32_t direction; /**< USART 传输模式(传输方向)
@arg USART_DIRECTION_SEND ... */
uint32_t over_sample; /**< USART 过采样方式
@arg USART_OVERSAMPLE_16 ... */
uint32_t baudrate; /**< USART 波特率 */
uint32_t wordlength; /**< USART 数据帧字长
@arg USART_WORDLENGTH_8BITS ... */
uint32_t stopbits; /**< USART 数据帧停止位长度
@arg USART_STOPBITS_1 ... */
uint32_t parity; /**< USART 数据帧奇偶校验
@arg USART_PARITY_NONE ... */
uint32_t hardware_flow; /**< USART 硬件控制
@arg USART_FLOWCONTROL_NONE ... */
}std_usart_init_t;
/**
* @brief USART同步模式初始化配置结构体定义
*/
typedef struct
{
uint32_t sync_clk; /**< 指定同步时钟模式
@arg USART_CLOCK_ENABLE ... */
uint32_t sync_clock_polarity; /**< 指定同步时钟极性
@arg USART_SYNC_POLARITY_LOW ... */
uint32_t sync_clock_phase; /**< 指定同步时钟相位
@arg USART_SYNC_PHASE_1EDGE ... */
}std_usart_sync_clk_init_t;
/**
* @}
*/
/*--------------------------------------------define--------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup USART_Constants USART Constants
* @brief USART常量定义及宏定义
* @{
*
*/
/************************************************************************************************/
/* USART 数据帧长度 */
#define USART_WORDLENGTH_8BITS USART_CR1_WL8BITS /**< 8-bits 字长 */
#define USART_WORDLENGTH_9BITS USART_CR1_WL9BITS /**< 9-bits 字长 */
/* USART 数据帧奇偶校验 */
#define USART_PARITY_NONE (0x00000000U) /**< 无校验 */
#define USART_PARITY_EVEN USART_CR1_PEN /**< 偶校验 */
#define USART_PARITY_ODD (USART_CR1_PEN | USART_CR1_PTS) /**< 奇校验 */
/* USART 数据帧过采样 */
#define USART_OVERSAMPLE_16 (0x00000000U) /**< 16倍过采样 */
#define USART_OVERSAMPLE_8 USART_CR1_OVS8 /**< 8倍过采样 */
/* USART接收器静默模式退出方式 */
#define USART_MUTE_EXIT_IDLELINE (0x00000000U) /**< 空闲帧唤醒 */
#define USART_MUTE_EXIT_ADDRESSMARK USART_CR1_RXWKUP /**< 地址匹配唤醒 */
/* USART 波特率分频配置范围 */
#define USART_BRR_MIN (0x00000010U) /**< USART波特率寄存器允许的最小值 */
#define USART_BRR_MAX (0x0000FFFFU) /**< USART波特率寄存器允许的最大值 */
/* USART传输模式 */
#define USART_DIRECTION_NONE (0x00000000U) /**< 未使能发送器和接收器 */
#define USART_DIRECTION_SEND USART_CR1_TE /**< 单接收模式(仅使能接收器) */
#define USART_DIRECTION_RECEIVE USART_CR1_RE /**< 单发送模式(仅使能发送器) */
#define USART_DIRECTION_SEND_RECEIVE (USART_CR1_TE |USART_CR1_RE) /**< 发送/接收(使能发送器和接收器) */
/* USART 时钟控制,用于同步及智能卡模式 */
#define USART_CLOCK_DISABLE (0x00000000U) /**< 禁止USART时钟 */
#define USART_CLOCK_ENABLE USART_CR2_CLKEN /**< 使能USART时钟 */
/* USART 数据帧大小端 */
#define USART_DATA_ORDER_LSBFIRST (0x00000000U) /**< 低有效位优先 */
#define USART_DATA_ORDER_MSBFIRST USART_CR2_MSBFIRST /**< 高有效位优先 */
/* USART 同步时钟极性 */
#define USART_SYNC_POLARITY_LOW (0x00000000U) /**< 空闲态,同步时钟引脚处于低电平 */
#define USART_SYNC_POLARITY_HIGH USART_CR2_CPOL /**< 空闲态,同步时钟引脚处于高电平 */
/* USART 同步时钟相位 */
#define USART_SYNC_PHASE_1EDGE (0x00000000U) /**< 同步时钟的第1个边沿采样数据帧的第1个bit */
#define USART_SYNC_PHASE_2EDGE USART_CR2_CPHA /**< 同步时钟的第2个边沿采样数据帧的第1个bit */
/* USART唤醒地址长度 */
#define USART_DETECT_4BITS (0x00000000U) /**< 4-bits长度唤醒地址 */
#define USART_DETECT_7BITS USART_CR2_ADDRM /**< 7-bits长度唤醒地址 */
/* USART 数据帧停止位 */
#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通信模式 */
#define USART_DE_POLARITY_HIGH (0x00000000U) /**< Driver信号极性高有效 */
#define USART_DE_POLARITY_LOW USART_CR3_DEP /**< Driver信号极性低有效 */
/* USART接收溢出 */
#define USART_OVERRUN_ENABLE (0x00000000U) /**< 禁止USART接收溢出 */
#define USART_OVERRUN_DISABLE USART_CR3_ORED /**< 使能USART接收溢出 */
/* USART IRDA 工作模式 */
#define USART_IRDA_NORMAL_MODE (0x00000000U) /**< 使用IRDA 正常模式 */
#define USART_IRDA_LOWPOWER_MODE USART_CR3_IRLP /**< 使用IRDA 低功耗模式 */
/* USART LIN 模式 中断帧检测长度 */
#define USART_LIN_BREAK_DETECT_10_BITS (0x00000000U) /**< LIN模式中断帧检测长度 10bits */
#define USART_LIN_BREAK_DETECT_11_BITS USART_CR2_LBDL /**< LIN模式中断帧检测长度 11bits */
/* USART 硬件流控 */
#define USART_FLOWCONTROL_NONE (0x00000000U) /**< 无流控功能 */
#define USART_FLOWCONTROL_RTS USART_CR3_RTSE /**< RTS功能使能 */
#define USART_FLOWCONTROL_CTS USART_CR3_CTSE /**< CTS功能使能 */
#define USART_FLOWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /**< RTS和CTS功能同时使能 */
/* USART 数据帧采样策略 */
#define USART_SAMPLE_THREE_BIT (0x00000000U) /**< Three-bit采样支持噪声检测 */
#define USART_SAMPLE_ONE_BIT USART_CR3_OBS /**< One-bit采样不支持噪声检测 */
/*USART中断使能位 */
#define USART_CR1_INTERRUPT_IDLE USART_CR1_IDLEIE /**< USART 空闲中断使能 */
#define USART_CR1_INTERRUPT_RXNE USART_CR1_RXNEIE /**< USART 接收寄存器非空中断使能 */
#define USART_CR1_INTERRUPT_TC USART_CR1_TCIE /**< USART 发送完成中断使能 */
#define USART_CR1_INTERRUPT_TXE USART_CR1_TXEIE /**< USART 发送寄存器空中断使能 */
#define USART_CR1_INTERRUPT_PE USART_CR1_PEIE /**< USART 奇偶校验错误中断使能 */
#define USART_CR1_INTERRUPT_CM USART_CR1_CMIE /**< USART 字符匹配中断使能 */
#define USART_CR1_INTERRUPT_RTO USART_CR1_RTOIE /**< USART 接收超时中断使能 */
#define USART_CR1_INTERRUPT_EB USART_CR1_EBIE /**< USART 块尾检测中断使能 */
#define USART_CR2_INTERRUPT_LBD USART_CR2_LBDIE /**< USART 中断帧检测中断使能 */
#define USART_CR3_INTERRUPT_ERR USART_CR3_EIE /**< USART 错误中断使能(帧错误,噪声错误,溢出错误) */
#define USART_CR3_INTERRUPT_CTS USART_CR3_CTSIE /**< USART CTS中断使能 */
#define USART_CR3_INTERRUPT_TCBGT USART_CR3_TCBGTIE /**< USART 保护时间前发送完成中断使能 */
/* USART中断标志清除位(USART_ICR寄存器) */
#define USART_CLEAR_PE USART_ICR_PECF /**< 奇偶校验错误标志清除 */
#define USART_CLEAR_FE USART_ICR_FECF /**< 帧错误标志清除 */
#define USART_CLEAR_NOISE USART_ICR_NOISECF /**< 噪声错误标志清除 */
#define USART_CLEAR_ORE USART_ICR_ORECF /**< 接收溢出错误标志清除 */
#define USART_CLEAR_IDLE USART_ICR_IDLECF /**< 线路空闲标志清除 */
#define USART_CLEAR_TC USART_ICR_TCCF /**< 发送完成标志清除 */
#define USART_CLEAR_TCBGT USART_ICR_TCBGTCF /**< 在保护时间前发送完成标志清除 */
#define USART_CLEAR_LBD USART_ICR_LBDCF /**< LBD标志清除 */
#define USART_CLEAR_CTS USART_ICR_CTSCF /**< CTS标志清除 */
#define USART_CLEAR_RTO USART_ICR_RTOCF /**< 接收超时标志清除 */
#define USART_CLEAR_EB USART_ICR_EBCF /**< 块尾标志清除 */
#define USART_CLEAR_CM USART_ICR_CMCF /**< 字符匹配清除 */
/* USART 状态标志 */
#define USART_FLAG_REACK USART_ISR_REACK /**< USART 接收器使能确认标志 */
#define USART_FLAG_TEACK USART_ISR_TEACK /**< USART 发送器使能确认标志 */
#define USART_FLAG_IDLE USART_ISR_IDLE /**< USART 空闲标志 */
#define USART_FLAG_RECEIVE_BUSY USART_ISR_BUSY /**< USART 接收忙(接收管脚上有数据传输) */
#define USART_FLAG_TXE USART_ISR_TXE /**< USART 发送数据寄存器空标志 */
#define USART_FLAG_TC USART_ISR_TC /**< USART 发送完成标志 */
#define USART_FLAG_TCBGT USART_ISR_TCBGT /**< USART 在保护时间前发送完成标志 */
#define USART_FLAG_RXNE USART_ISR_RXNE /**< USART 接收数据寄存器非空标志 */
#define USART_FLAG_LBD USART_ISR_LBD /**< USART 中断帧接收标志 */
#define USART_FLAG_CM USART_ISR_CMF /**< USART 字符/地址匹配标志 */
#define USART_FLAG_BKSEND USART_ISR_BKSEND /**< USART 中断字符发送标志 */
#define USART_FLAG_CTS USART_ISR_CTS /**< USART CTS标志 */
#define USART_FLAG_CTSIF USART_ISR_CTSIF /**< USART CTS标志中断标志 */
#define USART_FLAG_RTO USART_ISR_RTOF /**< USART 接收超时标志 */
#define USART_FLAG_EB USART_ISR_EBF /**< USART 块接收完成标志 */
#define USART_FLAG_RWU USART_ISR_RWU /**< USART 接收器静默模式标志 */
#define USART_FLAG_ORE USART_ISR_ORE /**< USART 接收溢出错误标志 */
#define USART_FLAG_NOISE USART_ISR_NOISE /**< USART 噪声错误标志 */
#define USART_FLAG_FE USART_ISR_FE /**< USART 帧错误标志 */
#define USART_FLAG_PE USART_ISR_PE /**< USART 奇偶校验错误标志 */
/**
* @}
*/
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup USART_External_Functions USART External Functions
* @brief USART对外函数
* @{
*
*/
/************************************************************************************************/
/**
* @brief 使能USART
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_enable(USART_t *usartx)
{
usartx->CR1 |= (USART_CR1_UE);
}
/**
* @brief 禁止USART
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_disable(USART_t *usartx)
{
usartx->CR1 &= (~USART_CR1_UE);
}
/**
* @brief 设置USART字符长度
* @param usartx USART外设
* @param word_length USART 字符长度
* @arg USART_WORDLENGTH_8BITS
* @arg USART_WORDLENGTH_9BITS
* @retval 无
*/
__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 获取USART字符长度
* @param usartx USART外设
* @retval uint32_t USART 字符长度
* @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 设置USART奇偶校验
* @param usartx USART外设
* @param parity USART奇偶校验项
* @arg USART_PARITY_NONE
* @arg USART_PARITY_EVEN
* @arg USART_PARITY_ODD
* @retval 无
*/
__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 获取USART奇偶校验
* @param usartx USART外设
* @retval uint32_t USART奇偶校验项
* @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 设置USART停止位
* @param usartx USART外设
* @param stopbits USART停止位位数
* @arg USART_STOPBITS_0_5
* @arg USART_STOPBITS_1
* @arg USART_STOPBITS_1_5
* @arg USART_STOPBITS_2
* @retval 无
*/
__STATIC_INLINE void std_usart_set_stopbits(USART_t *usartx, uint32_t stopbits)
{
MODIFY_REG(usartx->CR2, USART_CR2_STOPBIT, stopbits);
}
/**
* @brief 获取USART停止位
* @param usartx USART外设
* @retval uint32_t USART停止位位数
* @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 设置USART字符大小端
* @param usartx USART外设
* @param data_order USART 字符帧格式大小端
* @arg USART_DATA_ORDER_LSBFIRST
* @arg USART_DATA_ORDER_MSBFIRST
* @retval 无
*/
__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 获取USART字符大小端
* @param usartx USART外设
* @retval uint32_t USART 字符帧格式大小端
* @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 设置USART过采样模式
* @param usartx USART外设
* @param over_sample USART过采样模式
* @arg USART_OVERSAMPLE_8
* @arg USART_OVERSAMPLE_16
* @retval 无
*/
__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 获取USART过采样模式
* @param usartx USART外设
* @retval uint32_t USART过采样模式
* @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 设置USART采样策略
* @param usartx USART外设
* @param sample_method USART采样策略
* @arg USART_SAMPLE_THREE_BIT
* @arg USART_SAMPLE_ONE_BIT
* @retval 无
*/
__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 设置USART传输方向
* @param usartx USART外设
* @param direction USART传输方向
* @arg USART_DIRECTION_NONE
* @arg USART_DIRECTION_SEND
* @arg USART_DIRECTION_RECEIVE
* @arg USART_DIRECTION_SEND_RECEIVE
* @retval 无
*/
__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 获取 USART 传输方向控制
* @param usartx USART外设
* @retval uint32_t 传输方向
* @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 使能USART引脚交换
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_pin_swap_enable(USART_t *usartx)
{
usartx->CR2 |= (USART_CR2_SWAP);
}
/**
* @brief 禁止USART引脚交换
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_pin_swap_disable(USART_t *usartx)
{
usartx->CR2 &= (~USART_CR2_SWAP);
}
/**
* @brief 使能USART RX引脚电平反向
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_rx_level_invert_enable(USART_t *usartx)
{
usartx->CR2 |= (USART_CR2_RXIVC);
}
/**
* @brief 禁止USART RX引脚电平反向
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_rx_level_invert_disable(USART_t *usartx)
{
usartx->CR2 &= (~USART_CR2_RXIVC);
}
/**
* @brief 使能USART TX引脚电平反向
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_tx_level_invert_enable(USART_t *usartx)
{
usartx->CR2 |= (USART_CR2_TXIVC);
}
/**
* @brief 禁止USART TX引脚电平反向
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_tx_level_invert_disable(USART_t *usartx)
{
usartx->CR2 &= (~USART_CR2_TXIVC);
}
/**
* @brief 使能USART数据极性反向
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_data_invert_enable(USART_t *usartx)
{
usartx->CR2 |= (USART_CR2_DATAIVC);
}
/**
* @brief 禁止USART数据极性反向
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_data_invert_disable(USART_t *usartx)
{
usartx->CR2 &= (~USART_CR2_DATAIVC);
}
/**
* @brief 使能USART时钟 用于同步及智能卡模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_clk_enable(USART_t *usartx)
{
usartx->CR2 |= (USART_CR2_CLKEN);
}
/**
* @brief 禁止USART时钟 用于同步及智能卡模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_clk_disable(USART_t *usartx)
{
usartx->CR2 &= (~USART_CR2_CLKEN);
}
/**
* @brief 设置USART同步时钟极性
* @param usartx USART外设
* @param sync_clk_polarity USART同步时钟极性
* @arg USART_SYNC_POLARITY_LOW
* @arg USART_SYNC_POLARITY_HIGH
* @retval 无
*/
__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 设置USART同步时钟相位
* @param usartx USART外设
* @param sync_clk_phase USART同步时钟相位
* @arg USART_SYNC_PHASE_1EDGE
* @arg USART_SYNC_PHASE_2EDGE
* @retval 无
*/
__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从静默退出方式选择
* @param usartx USART外设
* @param mute_mode USART 退出静默方式
* @arg USART_MUTE_EXIT_IDLELINE
* @arg USART_MUTE_EXIT_ADDRESSMARK
* @retval 无
*/
__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 使能USART多机通信模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_multi_mode_enable(USART_t *usartx)
{
usartx->CR1 |= (USART_CR1_RXMME);
}
/**
* @brief 禁止USART多机通信模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_multi_mode_disable(USART_t *usartx)
{
usartx->CR1 &= (~USART_CR1_RXMME);
}
/**
* @brief 设置USART地址匹配模式选择
* @param usartx USART外设
* @param addr_mode USART 地址匹配模式
* @arg USART_DETECT_4BITS
* @arg USART_DETECT_7BITS
* @retval 无
*/
__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 设置USART地址匹配模式 本地地址
* @param usartx USART外设
* @param local_address USART 本地地址 8bits
* @note 地址匹配的行为还与选择的匹配模式有关匹配模式有USART_DETECT_4BITS、USART_DETECT_7BITS两种
* @retval 无
*/
__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 设置USART 匹配字符
* @param usartx USART外设
* @param data_match 匹配字符 8bits 0~0xFF
* @retval 无
*/
__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 使能USART 智能卡模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_smartcard_enable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_SCEN);
}
/**
* @brief 禁止USART 智能卡模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_smartcard_disable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_SCEN);
}
/**
* @brief 使能USART 智能卡模式NACK
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_smartcard_nack_enable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_SCNAK);
}
/**
* @brief 禁止USART 智能卡模式NACK
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_smartcard_nack_disable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_SCNAK);
}
/**
* @brief 设置USART 智能卡模式自动重试次数
* @param usartx USART外设
* @param retry_cnt 智能卡模式重试次数 取值范围0x00 ~ 0x07
* @retval 无
*/
__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 设置USART时钟预分频用于智能卡和IrDA模式
* @param usartx USART外设
* @param presc_value 智能卡模式下为时钟输出的预分频值, IrDA模式下为工作时钟的预分频值
* @note 智能卡模式下 presc_value 取值范围0x01~ 0x01F, 对应预分频值 2 ~ 62
* @note IrDA模式下 presc_value 取值范围0x01~ 0x0FF, 对应预分频值 1 ~ 255
* @note presc_value 禁止赋值为0
* @retval 无
*/
__STATIC_INLINE void std_usart_set_prescaler(USART_t *usartx, uint32_t presc_value)
{
MODIFY_REG(usartx->GTPR, USART_GTPR_PSV, presc_value);
}
/**
* @brief 获取USART 智能卡时钟输出的预分频值
* @param usartx USART外设
* @note 智能卡模式下 时钟输出的实际分配值为返回值*2预分频值范围 2 ~ 62
* @note IrDA模式下 返回值为IrDA工作时钟的实际分频值 预分频值范围 1 ~ 255
* @retval uint32_t 预分频值
*/
__STATIC_INLINE uint32_t std_usart_get_prescaler(USART_t *usartx)
{
return (usartx->GTPR & USART_GTPR_PSV);
}
/**
* @brief 设置USART 智能卡模式额外保护时间
* @param usartx USART外设
* @param guard_time 智能卡模式额外保护时间
* @note guard_time 取值范围0x00~ 0x0FF, 单位1etu
* @retval 无
*/
__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 获取USART 智能卡模式额外保护时间
* @param usartx USART外设
* @note 取值范围0x00~ 0x0FF, 单位1etu
* @retval uint32_t 已配置的额外保护时间
*/
__STATIC_INLINE uint32_t std_usart_smartcard_get_guard_time(USART_t *usartx)
{
return ((usartx->GTPR & USART_GTPR_GT) >> USART_GTPR_GT_POS);
}
/**
* @brief 设置USART 智能卡模式预计接收的块长度
* @param usartx USART外设
* @param block_length 预计接收的块长度 取值范围0x00~ 0x0FF,
* @retval 无
*/
__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 获取USART 智能卡模式预计接收的块长度
* @param usartx USART外设
* @retval uint32_t 已配置的预计接收块长度
*/
__STATIC_INLINE uint32_t std_usart_smartcard_get_block_length(USART_t *usartx)
{
return ((usartx->RTO & USART_RTO_BLKN) >> USART_RTO_BLKN_POS);
}
/**
* @brief 使能USART IrDA 模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_irda_enable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_IREN);
}
/**
* @brief 禁止USART IrDA 模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_irda_disable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_IREN);
}
/**
* @brief 设置 USART IrDA 工作模式
* @param usartx USART外设
* @param irda_mode USART外设
* @arg USART_IRDA_NORMAL_MODE
* @arg USART_IRDA_LOWPOWER_MODE
* @retval 无
*/
__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 获取 USART IrDA 工作模式
* @param usartx USART外设
* @retval uint32_t IrDA工作模式
@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 使能USART LIN 模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_lin_mode_enable(USART_t *usartx)
{
usartx->CR2 |= (USART_CR2_LINEN);
}
/**
* @brief 禁止USART LIN 模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_lin_mode_disable(USART_t *usartx)
{
usartx->CR2 &= (~USART_CR2_LINEN);
}
/**
* @brief 设置USART LIN 模式中断帧检测长度
* @param usartx USART外设
* @param break_length LIN 模式中断帧检测长度
* @arg USART_LIN_BREAK_DETECT_10_BITS
* @arg USART_LIN_BREAK_DETECT_11_BITS
* @retval 无
*/
__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 获取USART LIN 模式中断帧检测长度
* @param usartx USART外设
* @retval uint32_t LIN 模式中断帧检测长度
* @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 使能 USART 接收超时
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_receive_timeout_enable(USART_t *usartx)
{
usartx->CR2 |= (USART_CR2_RTOEN);
}
/**
* @brief 禁用 USART 接收超时
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_receive_timeout_disable(USART_t *usartx)
{
usartx->CR2 &= (~USART_CR2_RTOEN);
}
/**
* @brief 设置USART 接收超时时间
* @param usartx USART外设
* @param timeout 接收超时时间, 取值范围0x00 ~ 0x00FFFFFF 单位1数据位
* @retval 无
*/
__STATIC_INLINE void std_usart_set_receive_timeout(USART_t *usartx, uint32_t timeout)
{
MODIFY_REG(usartx->RTO, USART_RTO_RTOV, timeout);
}
/**
* @brief 设置USART 硬件流控控制方式
* @param usartx USART外设
* @param hardflow 硬件流控控制方式
* @arg USART_FLOWCONTROL_NONE
* @arg USART_FLOWCONTROL_RTS
* @arg USART_FLOWCONTROL_CTS
* @arg USART_FLOWCONTROL_RTS_CTS
* @retval 无
*/
__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 使能USART RS485 DE控制
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_de_control_enable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_DEM);
}
/**
* @brief 禁止USART RS485 DE控制
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_de_control_disable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_DEM);
}
/**
* @brief 设置USART RS485 DE控制建立时间
* @param usartx USART外设
* @param setup_time DE信号建立时间范围为0x00~0x1F
* @retval 无
*/
__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 设置USART RS485 DE控制信号保持时间
* @param usartx USART外设
* @param hold_time USART DE控制信号保持时间范围为0x00~0x1F
* @retval 无
*/
__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信号极性选择
* @param usartx USART外设
* @param polarity USART RS485 DE信号极性
* @arg USART_DE_POLARITY_HIGH
* @arg USART_DE_POLARITY_LOW
* @retval 无
*/
__STATIC_INLINE void std_usart_set_de_control_polarity(USART_t *usartx, uint32_t polarity)
{
MODIFY_REG(usartx->CR3, USART_CR3_DEP, polarity);
}
/**
* @brief 使能USART单线半双工模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_half_duplex_enable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_HDEN);
}
/**
* @brief 禁止USART单线半双工模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_half_duplex_disable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_HDEN);
}
/**
* @brief 使能USART DMA模式USART接收
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_dma_rx_enable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_DMAR);
}
/**
* @brief 禁止USART DMA模式USART接收
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_dma_rx_disable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_DMAR);
}
/**
* @brief 使能USART DMA模式发送
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_dma_tx_enable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_DMAT);
}
/**
* @brief 禁止USART DMA模式发送
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_dma_tx_disable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_DMAT);
}
/**
* @brief 使能USART接收出错时禁止DMA
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_dma_off_onrxerror_enable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_DDRE);
}
/**
* @brief 禁止USART接收出错时禁止DMA
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_dma_off_onrxerror_disable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_DDRE);
}
/**
* @brief 禁止USART上溢
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_overrun_disable(USART_t *usartx)
{
usartx->CR3 |= (USART_CR3_ORED);
}
/**
* @brief 使能USART上溢
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_overrun_enable(USART_t *usartx)
{
usartx->CR3 &= (~USART_CR3_ORED);
}
/**
* @brief 请求清空USART发送数据
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_request_tx_flush(USART_t *usartx)
{
usartx->RQR |= (USART_RQR_TXFLUQ);
}
/**
* @brief 请求清空USART接收数据
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_request_rx_flush(USART_t *usartx)
{
usartx->RQR |= (USART_RQR_RXFLUQ);
}
/**
* @brief USART请求发送中断帧
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_request_break_frame(USART_t *usartx)
{
usartx->RQR |= (USART_RQR_BKSENDQ);
}
/**
* @brief USART请求进入静默模式
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_request_enter_mutemode(USART_t *usartx)
{
usartx->RQR |= (USART_RQR_MUTEQ);
}
/**
* @brief 使能USART CR1寄存器中控制的中断
* @param usartx USART外设
* @param interrupt USART中断源选择
* @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 无
*/
__STATIC_INLINE void std_usart_cr1_interrupt_enable(USART_t *usartx, uint32_t interrupt)
{
usartx->CR1 |= (interrupt);
}
/**
* @brief 禁止USART CR1寄存器中控制的中断
* @param usartx USART外设
* @param interrupt USART中断源选择
* @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 无
*/
__STATIC_INLINE void std_usart_cr1_interrupt_disable(USART_t *usartx, uint32_t interrupt)
{
usartx->CR1 &= (~interrupt);
}
/**
* @brief 获取USART CR1寄存器中控制的中断使能
* @param usartx USART外设
* @param interrupt USART中断源选择
* @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 返回选择的USART中断源使能状态
* @arg true: 表示选择中断源使能
* @arg false: 表示选择中断源未使能
*/
__STATIC_INLINE bool std_usart_get_cr1_interrupt_enable(USART_t *usartx, uint32_t interrupt)
{
return ((usartx->CR1 & (interrupt)) == (interrupt));
}
/**
* @brief 使能USART LIN 模式中断帧检测中断
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_lin_break_detection_interrupt_enable(USART_t *usartx)
{
usartx->CR2 |= USART_CR2_INTERRUPT_LBD;
}
/**
* @brief 禁止USART LIN 模式中断帧检测中断
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_lin_break_detection_interrupt_disable(USART_t *usartx)
{
usartx->CR2 &= (~USART_CR2_INTERRUPT_LBD);
}
/**
* @brief 获取USART LIN 模式中断帧检测中断
* @param usartx USART外设
* @retval bool 返回选择的USART中断源使能状态
* @arg true 表示选择中断源使能
* @arg false 表示选择中断源未使能
*/
__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 使能USART CR3寄存器中控制的中断
* @param usartx USART外设
* @param interrupt USART中断源选择
* @arg USART_CR3_INTERRUPT_ERR
* @arg USART_CR3_INTERRUPT_CTS
* @arg USART_CR3_INTERRUPT_TCBGT
* @retval 无
*/
__STATIC_INLINE void std_usart_cr3_interrupt_enable(USART_t *usartx, uint32_t interrupt)
{
usartx->CR3 |= (interrupt);
}
/**
* @brief 禁止USART CR3寄存器中控制的中断
* @param usartx USART外设
* @param interrupt USART中断源选择
* @arg USART_CR3_INTERRUPT_ERR
* @arg USART_CR3_INTERRUPT_CTS
* @arg USART_CR3_INTERRUPT_TCBGT
* @retval 无
*/
__STATIC_INLINE void std_usart_cr3_interrupt_disable(USART_t *usartx, uint32_t interrupt)
{
usartx->CR3 &= (~interrupt);
}
/**
* @brief 获取USART CR3寄存器中中断使能
* @param usartx USART外设
* @param interrupt 使能中断源选择
* @arg USART_CR3_INTERRUPT_ERR
* @arg USART_CR3_INTERRUPT_CTS
* @arg USART_CR3_INTERRUPT_TCBGT
* @retval bool 返回选择的USART中断源使能状态
* @arg true 表示选择中断源使能
* @arg false 表示选择中断源未使能
*/
__STATIC_INLINE bool std_usart_get_cr3_interrupt_enable(USART_t *usartx, uint32_t interrupt)
{
return ((usartx->CR3 & (interrupt)) == (interrupt));
}
/**
* @brief 获取USART标志
* @param usartx USART外设
* @param flag USART标志
* @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标志置起状态
* @arg true 状态置起
* @arg flase 状态未置起
*/
__STATIC_INLINE bool std_usart_get_flag(USART_t *usartx,uint32_t flag)
{
return ((usartx->ISR & (flag)) == (flag));
}
/**
* @brief 清除USART标志
* @param usartx USART外设
* @param clear_flag USART标志信息
* @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 无
*/
__STATIC_INLINE void std_usart_clear_flag(USART_t *usartx, uint32_t clear_flag)
{
usartx->ICR = (clear_flag);
}
/**
* @brief 使能USART接收器
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_rx_enable(USART_t *usartx)
{
usartx->CR1 |= (USART_CR1_RE);
}
/**
* @brief 禁止USART接收器
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_rx_disable(USART_t *usartx)
{
usartx->CR1 &= (~USART_CR1_RE);
}
/**
* @brief 使能USART发送器
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_tx_enable(USART_t *usartx)
{
usartx->CR1 |= (USART_CR1_TE);
}
/**
* @brief 禁止USART发送器
* @param usartx USART外设
* @retval 无
*/
__STATIC_INLINE void std_usart_tx_disable(USART_t *usartx)
{
usartx->CR1 &= (~USART_CR1_TE);
}
/**
* @brief 获取USART接收数据
* @param usartx USART外设
* @retval uint32_t USART接收到的数据
*/
__STATIC_INLINE uint32_t std_usart_rx_read_data(USART_t *usartx)
{
return (usartx->RDR & USART_RDR_RDR);
}
/**
* @brief 写入USART发送数据
* @param usartx USART外设
* @param data_value 发送数据
* @retval 无
*/
__STATIC_INLINE void std_usart_tx_write_data(USART_t *usartx, uint32_t data_value)
{
usartx->TDR = data_value;
}
/**
* @brief 写入USART 波特率分频寄存器
* @param usartx USART外设
* @param brr_value 波特率分频值 范围: 0x10 ~ 0xFFFF
* @retval 无
*/
__STATIC_INLINE void std_usart_set_brr_value(USART_t *usartx, uint32_t brr_value)
{
usartx->BRR = brr_value;
}
/**
* @brief 获取USART波特率分频配置
* @param usartx USART外设
* @retval uint32_t USART波特率分频的配置值
*/
__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 */