HC32F460库简介-USART

HC32F460库简介-USART


API 简介

en_result_t USART_UART_Init(M4_USART_TypeDef *USARTx,
                                const stc_usart_uart_init_t *pstcInitCfg);		//初始化指定 UASRT 的 UART 模式
en_result_t USART_CLKSYNC_Init(M4_USART_TypeDef *USARTx,
                                const stc_usart_clksync_init_t *pstcInitCfg);	//初始化指定 USART 为时钟同步模式
en_result_t USART_SC_Init(M4_USART_TypeDef *USARTx,
                                const stc_usart_sc_init_t *pstcInitCfg);		//初始化指定 USART 为智能卡模式
en_result_t USART_DeInit(M4_USART_TypeDef *USARTx);								//取消指定 USART 的初始化
en_flag_status_t USART_GetStatus(M4_USART_TypeDef *USARTx,
                                en_usart_status_t enStatus);					//获取指定 USART 的状态
en_result_t USART_ClearStatus(M4_USART_TypeDef *USARTx,
                                en_usart_status_t enStatus);					//清除指定 USART 的状态配置
en_result_t USART_FuncCmd(M4_USART_TypeDef *USARTx,
                                en_usart_func_t enFunc,
                                en_functional_state_t enCmd);					//配置 USART 的功能
en_result_t USART_SetParity(M4_USART_TypeDef *USARTx,
                                en_usart_parity_t enParity);					//配置 USART 的奇偶检验
en_usart_parity_t USART_GetParity(M4_USART_TypeDef *USARTx);					//获取 USART 的奇偶校验配置
en_result_t USART_SetOverSampling(M4_USART_TypeDef *USARTx,		
                                en_usart_sample_mode_t enSampleMode);			//设置 USART 采样模式
en_usart_sample_mode_t USART_GetOverSampling(M4_USART_TypeDef *USARTx);			//获取 USART 采样模式配置
en_result_t USART_SetDataDirection(M4_USART_TypeDef *USARTx,
                                en_usart_data_dir_t enDir);						//设置 USART 的大小端传输方向
en_usart_data_dir_t USART_GetTransferDirection(M4_USART_TypeDef *USARTx);		//获取 USART 的大小端传输方向配置
en_result_t USART_SetDataLength(M4_USART_TypeDef *USARTx,
                                en_usart_data_len_t enDataLen);					//设置 USART 发送数据长度
en_usart_data_len_t USART_GetDataLength(M4_USART_TypeDef *USARTx);				//获取 USART 发送数据长度配置
en_result_t USART_SetClkMode(M4_USART_TypeDef *USARTx,
                                en_usart_clk_mode_t enClkMode);					//设置 USART 的时钟模式
en_usart_clk_mode_t USART_GetClkMode(M4_USART_TypeDef *USARTx);					//获取 USART 的时钟模式配置
en_result_t USART_SetMode(M4_USART_TypeDef *USARTx,							
                                en_usart_mode_t enMode);						//设置 USART 的模式
en_usart_mode_t USART_GetMode(M4_USART_TypeDef *USARTx);						//获取 USART 的模式配置
en_result_t USART_SetStopBitsLength(M4_USART_TypeDef *USARTx,
                                en_usart_stop_bit_t enStopBit);					//设置 USART 的停止位
en_usart_stop_bit_t USART_GetStopBitsLength(M4_USART_TypeDef *USARTx);			//获取 USART 的停止位配置
en_result_t USART_SetSbDetectMode(M4_USART_TypeDef *USARTx,
                                en_usart_sb_detect_mode_t enDetectMode);		//设置 USART 为检测模式
en_usart_sb_detect_mode_t USART_GetSbDetectMode(M4_USART_TypeDef *USARTx);		//获取 USART 的检测模式配置
en_result_t USART_SetHwFlowCtrl(M4_USART_TypeDef *USARTx,
                                en_usart_hw_flow_ctrl_t enHwFlowCtrl);			//设置 USART 的硬件流控制
en_usart_hw_flow_ctrl_t USART_GetHwFlowCtrl(M4_USART_TypeDef *USARTx);			//获取 USART 的硬件流控制配置
en_result_t USART_SetClockDiv(M4_USART_TypeDef *USARTx,
                                en_usart_clk_div_t enClkPrescale);				//设置 USART 的时钟分频系数
en_usart_clk_div_t USART_GetClockDiv(M4_USART_TypeDef *USARTx);					//获取 USART 的时钟分频系数
en_result_t USART_SetScEtuClk(M4_USART_TypeDef *USARTx,
                                en_usart_sc_etu_clk_t enEtuClk);				//设置 USART 智能卡模式 ETU 时钟
en_usart_sc_etu_clk_t USART_GetScEtuClk(M4_USART_TypeDef *USARTx);				//获取 USART 智能卡模式 ETU 时钟的配置
en_result_t USART_SendData(M4_USART_TypeDef *USARTx, uint16_t u16Data);			//通过 USART 发送一个字节
uint16_t USART_RecData(M4_USART_TypeDef *USARTx);								//通过 USART 获取一个字节
en_result_t USART_SetBaudrate(M4_USART_TypeDef *USARTx,
                                uint32_t u32Baudrate);							//设置 USART 的波特率

USART 简介

串口编号

华大单片机 HC32F460 库中有四个串口,串口的基地址定义在芯片类型的头文件中,如hc32f460keta.h、hc32f46x.h(库版本不同会有一定差异)

M4_USART_TypeDef 的串口编号的基地址

#define M4_USART1                               ((M4_USART_TypeDef *)0x4001D000UL)
#define M4_USART2                               ((M4_USART_TypeDef *)0x4001D400UL)
#define M4_USART3                               ((M4_USART_TypeDef *)0x40021000UL)
#define M4_USART4                               ((M4_USART_TypeDef *)0x40021400UL)

UART 模式配置结构体 stc_usart_uart_init_t

typedef struct stc_usart_uart_init
{
    en_usart_clk_mode_t       enClkMode;        //时钟模式选择
    en_usart_clk_div_t        enClkDiv;         //时钟分频配置
    en_usart_data_len_t       enDataLength;     //数据长度配置 8bit/9bit
    en_usart_data_dir_t       enDirection;      //数据传输方向配置(大小端)
    en_usart_stop_bit_t       enStopBit;        //停止位配置
    en_usart_parity_t         enParity;         //奇偶校验位配置
    en_usart_sample_mode_t    enSampleMode;     //串口采样模式 8bit/16bit
    en_usart_sb_detect_mode_t enDetectMode;     //起始位检测模式
    en_usart_hw_flow_ctrl_t   enHwFlow;         //硬件流控制模式
} stc_usart_uart_init_t;

USART 模式配置结构体 stc_usart_clksync_init

typedef struct stc_usart_clksync_init
{
    en_usart_clk_mode_t       enClkMode;        //时钟模式配置
    en_usart_clk_div_t        enClkDiv;         //时钟分频配置
    en_usart_data_dir_t       enDirection;      //数据传输方向配置(大小端)
    en_usart_hw_flow_ctrl_t   enHwFlow;         //硬件流控制模式
} stc_usart_clksync_init_t;

USART 智能卡模式配置结构体 stc_usart_sc_init_t

typedef struct stc_usart_sc_init
{
    en_usart_clk_mode_t       enClkMode;        //时钟模式配置
    en_usart_clk_div_t        enClkDiv;         //时钟分频配置
    en_usart_data_dir_t       enDirection;      //数据传输方向配置(大小端)
} stc_usart_sc_init_t;

USART 状态枚举 en_usart_status_t

typedef enum en_usart_status
{
    UsartParityErr  = (1u << 0),            //接收数据校验错误标志
    UsartFrameErr   = (1u << 1),            //接收帧错误标志位
    UsartOverrunErr = (1u << 3),            //接收上溢错误标志位
    UsartRxNoEmpty  = (1u << 5),            //接收数据寄存器不为空标志
    UsartTxComplete = (1u << 6),            //发送完成标志位
    UsartTxEmpty    = (1u << 7),            //发送数据寄存器空标志
    UsartRxTimeOut  = (1u << 8),            //UART接收TIMEOUT标志位
    UsartRxMpb      = (1u << 16),           //多处理器位标志
} en_usart_status_t;

USART 功能枚举 en_usart_func_t

typedef enum en_usart_func
{
    UsartRx              = 0u,              //接收功能
    UsartRxInt           = 1u,              //接收中断功能
    UsartTx              = 2u,              //发送功能
    UsartTxEmptyInt      = 3u,              //发送中断功能
    UsartTimeOut         = 4u,              //接收超时功能
    UsartTimeOutInt      = 5u,              //接收超时中断功能
    UsartSilentMode      = 6u,              //多处理器操作时,静默模式使能位功能
    UsartTxCmpltInt      = 7u,              //发送完成功能
    UsartTxAndTxEmptyInt = 8u,              //发送和发送中断功能
    UsartParityCheck     = 9u,              //奇偶校验功能
    UsartNoiseFilter     = 10u,             //数字滤波功能
    UsartFracBaudrate    = 11u,             //小数滤波功能
    UsartMulProcessor    = 12u,             //多处理器功能
    UsartSmartCard       = 13u,             //智能卡功能
    UsartCts             = 14u,             //CTS 功能
} en_usart_func_t;

USART 奇偶校验位枚举 en_usart_parity_t

typedef enum en_usart_parity
{
    UsartParityNone = 0u,                   //无校验
    UsartParityEven = 1u,                   //偶检验
    UsartParityOdd  = 2u,                   //奇校验
} en_usart_parity_t;

USART 过采样模式枚举 en_usart_sample_mode_t

typedef enum en_usart_sample_mode
{
    UsartSampleBit16 = 0u,                   // 16 Bit
    UsartSampleBit8  = 1u,                   // 8 Bit
} en_usart_sample_mode_t;

USART 数据方向枚举 en_usart_data_dir_t

typedef enum en_usart_data_dir
{
    UsartDataLsbFirst = 0u,                 // LSB first 小端
    UsartDataMsbFirst = 1u,                 // MSB first 大端
} en_usart_data_dir_t;

USART 发送数据长度枚举 en_usart_data_len_t

typedef enum en_usart_data_len
{
    UsartDataBits8 = 0u,                    //8 Bit
    UsartDataBits9 = 1u,                    // 9 Bit
} en_usart_data_len_t;

USART 时钟选择枚举 en_usart_clk_mode_t

typedef enum en_usart_clk_mode
{
    UsartIntClkCkNoOutput = 0u,             //选择内部时钟源,不输出时钟。
    UsartIntClkCkOutput   = 1u,             //选择内部时钟源,输出时钟。
    UsartExtClk           = 2u,             //选择外部时钟源。
} en_usart_clk_mode_t;

USART 模式枚举 en_usart_mode_t

typedef enum en_usart_mode
{
    UsartUartMode      = 0u,                //异步模式
    UsartClkSyncMode   = 1u,                //同步模式
    UsartSmartCardMode = 2u,                //智能卡模式
} en_usart_mode_t;

USART 停止位枚举 en_usart_stop_bit_t

typedef enum en_usart_stop_bit
{
    UsartOneStopBit = 0u,                   // 1 Stop Bit
    UsartTwoStopBit = 1u,                   // 2 Stop Bit
} en_usart_stop_bit_t;

USART 硬件流控制 en_usart_hw_flow_ctrl_t

typedef enum en_usart_hw_flow_ctrl
{
    UsartRtsEnable = 0u,                    //使能 RTS 功能
    UsartCtsEnable = 1u,                    //使能 CTS 功能
} en_usart_hw_flow_ctrl_t;

USART 时钟分频枚举 en_usart_clk_div_t

typedef enum en_usart_clk_div
{
    UsartClkDiv_1  = 0u,                    // PCLK/1
    UsartClkDiv_4  = 1u,                    // PCLK/4
    UsartClkDiv_16 = 2u,                    // PCLK/16
    UsartClkDiv_64 = 3u,                    // PCLK/64
} en_usart_clk_div_t;
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式Stark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值