目录
一、基础知识
USART1基地址为:0x4001_D000
USART2基地址为:0x4001_D400
USART3基地址为:0x4002_1000
USART4基地址为:0x4002_1400
引脚映射:华大HC32F460与STM32F10x的区别在于:HC32F460有64个引脚支持Fun32~63功能选择,即我们说的重映射,Fun32~63主要为串行通信功能(包含USART,SPI, I2C, I2S, CAN);分为了Fun_Grp1、Fun_Grp2。具体可看<数据手册-引脚功能表>。而STM32F10x的GPIO引脚重映射是有规定的,所以华大的用起来比较灵活。
接收超时定时器通道选择
TIMEOUT 计数器采用Timer0 模块的计数器,具体对应关系如下:
USART1:Timer0 Unit1 A 通道
USART2:Timer0 Unit1 B 通道
USART3:Timer0 Unit2 A 通道
USART4:Timer0 Unit2 B 通道
USART串口通信的基本参数配置为一致,也是最常用的模式
UsartIntClkCkOutput:时钟为内部时钟输出
UsartClkDiv_16:16分频
UsartDataBits8:8位数据位
UsartDataLsbFirst:低位在前
UsartOneStopBit:1位停止位
UsartParityNone:无奇偶校验
UsartSamleBit8:8位采样
UsartStartBitFallEdge:起始位检测下降沿
UsartRtsEnable:RTS允许
二、代码实现
本样例主要展示USART外设配置为USART外设配置为UART模式时通过中断方式收发数据。
串口助手软件配置端口参数:
波特率:115200
数据位:8
校验位:None
停止位:1
宏定义
/* USART channel definition */
#define USART_CH (M4_USART4)
/* USART baudrate definition */
#define USART_BAUDRATE (115200ul)
/* USART Interrupt Number */
#define USART_RX_IRQn (Int000_IRQn)
#define USART_ERR_IRQn (Int001_IRQn)
#define USART_RTO_IRQn (Int002_IRQn)
#define USART_TX_IRQn (Int003_IRQn)
#define USART_CMP_IRQn (Int004_IRQn)
/* USART RX Port/Pin definition */
#define USART_RX_PORT (PortE)
#define USART_RX_PIN (Pin14)
#define USART_RX_FUNC (Func_Usart4_Rx)
#define USART_TX_PORT (PortE)
#define USART_TX_PIN (Pin15)
#define USART_TX_FUNC (Func_Usart4_Tx)
/* USART interrupt number */
#define USART_RI_NUM (INT_USART4_RI)
#define USART_EI_NUM (INT_USART4_EI)
#define USART_RTO_NUM (INT_USART4_RTO)
#define USART_TI_NUM (INT_USART4_TI)
#define USART_TCI_NUM (INT_USART4_TCI)
#define set Ok
#define reset Error
#define ENCODER_LEN 6
static uint16_t u16RxData;
串口初始化
/*串口初始化*/
void UART_Init(void)
{
en_result_t enRet = Ok;
stc_irq_regi_conf_t stcIrqRegiCfg;
/*配置串口使用的时钟和基本通信配置*/
const stc_usart_uart_init_t stcInitCfg = {
UsartIntClkCkOutput,
UsartClkDiv_16,//时钟分频
UsartDataBits8,

本文介绍了基于HC32F460微控制器的USART串口初始化过程,包括时钟配置、宏定义、引脚映射和中断设置。代码示例展示了如何通过中断方式收发数据,特别提到了接收超时定时器的配置。此外,还讨论了波特率设置的一个潜在问题及其解决方法。
2093

被折叠的 条评论
为什么被折叠?



