| 芯圣科技的CS32F103系列MCU以其高性价比和丰富的外设接口,在嵌入式领域得到了广泛应用。它兼容STM32的生态系统,拥有类似的架构和外设,是开发者在嵌入式项目中的一个理想选择。本帖将通过CS32F103的UART通信示例,演示如何使用芯圣MCU与其他设备进行串口数据传输。
 
 实现功能我们将配置CS32F103的UART接口,与PC串口终端通信,实现发送和接收字符串数据。此应用常用于设备调试或与其他微控制器通信。
 
 硬件连接
 UART的TX和RX分别与USB转TTL模块的RX和TX交叉连接。CS32F103C8T6 MCU开发板USB转TTL模块,用于连接PCPC串口工具(如SecureCRT或SSCOM)
 
 开发环境
 开发工具:Keil uVision 5编程语言:C语言固件库:芯圣CS32 HAL库
 代码实现
 #include "cs32f0xx_hal.h"
#include "usart.h"
#include "gpio.h"
// 初始化UART1
void MX_USART1_UART_Init(void)
{
    huart1.Instance = USART1;
    huart1.Init.BaudRate = 115200;
    huart1.Init.WordLength = UART_WORDLENGTH_8B;
    huart1.Init.StopBits = UART_STOPBITS_1;
    huart1.Init.Parity = UART_PARITY_NONE;
    huart1.Init.Mode = UART_MODE_TX_RX;
    huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    huart1.Init.OverSampling = UART_OVERSAMPLING_16;
    if (HAL_UART_Init(&huart1) != HAL_OK)
    {
        Error_Handler();
    }
}
// 发送字符串
void UART_SendString(UART_HandleTypeDef *huart, const char *str)
{
    HAL_UART_Transmit(huart, (uint8_t *)str, strlen(str), HAL_MAX_DELAY);
}
// 接收字符
void UART_ReceiveChar(UART_HandleTypeDef *huart, uint8_t *data)
{
    HAL_UART_Receive(huart, data, 1, HAL_MAX_DELAY);
}
// GPIO初始化
void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    // 使能GPIO时钟
    __HAL_RCC_GPIOA_CLK_ENABLE();
    // 配置UART引脚:PA9->TX, PA10->RX
    GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
// 主函数
int main(void)
{
    HAL_Init();               // 初始化HAL库
    SystemClock_Config();      // 配置系统时钟
    MX_GPIO_Init();            // 初始化GPIO
    MX_USART1_UART_Init();     // 初始化UART
    uint8_t received_data;
    const char *welcome_msg = "CS32F103 UART Communication Initialized.\r\n";
    
    // 发送欢迎信息
    UART_SendString(&huart1, welcome_msg);
    while (1)
    {
        // 接收一个字符并回显
        UART_ReceiveChar(&huart1, &received_data);
        HAL_UART_Transmit(&huart1, &received_data, 1, HAL_MAX_DELAY);
    }
}
代码解析
 UART初始化:通过MX_USART1_UART_Init()配置UART1的波特率、数据位、停止位等参数,确保通信稳定。GPIO配置:PA9和PA10分别作为UART1的TX和RX引脚,与USB转TTL模块连接。发送与接收:通过UART_SendString()发送字符串数据,并在while循环中实现接收和回显功能。PC端发送的字符将被MCU接收并立即返回。
 功能扩展
 多UART通信:CS32F103支持多个UART接口,可同时连接多个设备,实现多点通信。中断方式接收:可使用中断模式接收数据,避免在循环中轮询,提高效率。与其他外设结合:可将UART通信与传感器结合,实现传感数据的实时传输。
 小结通过本示例,我们实现了CS32F103 MCU与PC串口终端的通信功能。UART作为一种常用的串行通信方式,广泛应用于数据传输和设备调试。在开发中,利用芯圣MCU丰富的外设资源,开发者可以轻松构建高效的嵌入式系统。
 
 
 |