本帖最后由 meiyaolei 于 2024-12-30 00:02 编辑
CW32L010是一款集成了丰富功能的低功耗微控制器,其串口输出功能是通过其内部的通用异步收发器(UART)实现的。
一、串口硬件资源 CW32L010提供了二路低功耗UART,这些UART接口支持异步全双工、同步半双工和单线半双工模式,以及多机通信。

二、串口配置与初始化 在使用CW32L010的串口输出功能之前,需要进行相应的配置与初始化。通常包括设置波特率、数据位、停止位、校验位等参数,以及配置相关的GPIO引脚。
波特率设置:波特率是指串口通信的速率,CW32L010的UART接口支持广泛的波特率选择,可以通过小数波特率发生器提供精确的波特率。 数据位设置:数据位是指串口通信中每个数据帧的位数,CW32L010支持标准的数据位长度,如7位或8位。 停止位设置:停止位用于标识数据帧的结束,CW32L010支持1位或2位停止位的选择。 校验位设置:校验位用于检测数据传输中的错误,CW32L010支持无奇偶校验、奇校验和偶校验三种模式。 GPIO引脚配置:需要将指定的GPIO引脚配置为UART功能,包括TX(发送)和RX(接收)引脚。 
三、串口通信的实现 在配置和初始化完成后,就可以通过CW32L010的UART接口进行串口通信了。这通常包括数据的发送和接收两个过程。
数据发送:通过调用相关的UART发送函数,将数据帧发送到串口总线上。CW32L010的UART接口支持硬件数据流控制,可以在发送过程中自动处理数据的流动。 数据接收:通过轮询或中断的方式,接收来自串口总线的数据帧。当接收到数据时,可以触发中断或产生状态标志,以便及时处理接收到的数据。
四、代码: 串口配置:
void UART_Configuration(void)
{
UART_InitTypeDef UART_InitStructure = {0};
UART_InitStructure.UART_BaudRate = DEBUG_UART_BaudRate;
UART_InitStructure.UART_Over = UART_Over_16;
UART_InitStructure.UART_Source = UART_Source_PCLK;
UART_InitStructure.UART_UclkFreq = DEBUG_UART_UclkFreq;
UART_InitStructure.UART_StartBit = UART_StartBit_FE;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No ;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx;
UART_Init(DEBUG_UARTx, &UART_InitStructure);
}
主函数: //配置RCC
RCC_Configuration();
//配置GPIO
GPIO_Configuration();
//配置UART
UART_Configuration();
//使能UARTx RC中断
UART_ITConfig(DEBUG_UARTx, UART_IT_RC, ENABLE);
UART_SendString(DEBUG_UARTx, "\r\nCW32L010 UART Interrupt\r\n");
printf("\r\nCW32L010\r\n");
UART_ClearITPendingBit(CW_UART2, UART_IT_RC);
while(1)
{
//轮询收发
TxRxBufferSize = UART_RecvBuf_Polling(DEBUG_UARTx, TxRxBuffer);
UART_SendBuf_Polling(DEBUG_UARTx, TxRxBuffer, TxRxBufferSize);
}
五.原理图: 串口芯片CH340芯片连接图:
TYPE C接口输入:
六.输出结果 :
|