打印
[综合信息]

使用小华半导体MCU实现UART通信应用

[复制链接]
1056|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Uriah|  楼主 | 2024-10-4 16:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在这篇文章中,我将分享一个使用小华半导体MCU通过UART接口实现基本通信的代码示例。小华MCU性价比高,功能丰富,是物联网和嵌入式应用中常用的芯片之一。下面是一个简单的UART通信程序,通过该程序,我们可以从MCU发送并接收数据。

应用场景
我们通过UART发送和接收数据,可以用于调试、传输指令或数据采集等常见场景。在这份代码中,UART被配置为9600波特率,使用轮询方式发送和接收数据。

硬件连接
  • MCU的TX引脚连接到接收设备的RX引脚。
  • MCU的RX引脚连接到发送设备的TX引脚。
  • 确保所有设备共用同一个地(GND)。

代码实现
#include "xh_mcu.h"
#include "xh_uart.h"

// 定义UART句柄
UART_HandleTypeDef huart;

// 初始化UART
void UART_Init(void) {
    huart.Instance = UART1;
    huart.Init.BaudRate = 9600;
    huart.Init.WordLength = UART_WORDLENGTH_8B;
    huart.Init.StopBits = UART_STOPBITS_1;
    huart.Init.Parity = UART_PARITY_NONE;
    huart.Init.Mode = UART_MODE_TX_RX;
   
    if (HAL_UART_Init(&huart) != HAL_OK) {
        // 初始化错误处理
        Error_Handler();
    }
}

// 发送数据函数
void UART_Send(char *data) {
    HAL_UART_Transmit(&huart, (uint8_t*)data, strlen(data), HAL_MAX_DELAY);
}

// 接收数据函数
void UART_Receive(char *buffer, uint16_t size) {
    HAL_UART_Receive(&huart, (uint8_t*)buffer, size, HAL_MAX_DELAY);
}

int main(void) {
    HAL_Init();        // 初始化HAL库
    UART_Init();       // 初始化UART

    char sendData[] = "Hello from MCU!";
    char recvData[100];

    while (1) {
        // 发送数据
        UART_Send(sendData);
        
        // 接收数据
        UART_Receive(recvData, sizeof(recvData));
        
        // 简单回显接收到的数据
        UART_Send(recvData);
        
        HAL_Delay(1000);  // 每秒发送一次数据
    }
}

// 错误处理函数
void Error_Handler(void) {
    // 错误时进行处理
    while (1) {
    }
}

代码说明:
  • UART_Init() 函数初始化UART配置,包括波特率、数据长度、停止位等。
  • UART_Send() 用于发送数据,这里通过HAL_UART_Transmit来实现。
  • UART_Receive() 用于接收数据,通过HAL_UART_Receive来实现。
  • 在主循环中,定期发送预设的字符串,并将接收到的数据回传,形成简单的回显效果。

总结
通过这段简单的代码,我们实现了使用小华半导体MCU进行UART通信的基础功能。这只是一个入门级的例子,实际项目中可以根据需求进行更复杂的功能扩展,比如中断处理、DMA传输等。希望这对刚开始使用小华MCU的同学有所帮助!

使用特权

评论回复
沙发
Wordsworth| | 2024-10-4 16:08 | 只看该作者
这个例子挺实用的,简单明了,适合新手上手,收藏了!

使用特权

评论回复
板凳
Bblythe| | 2024-10-4 16:09 | 只看该作者
刚好最近在研究UART通信,这篇文章太及时了,谢谢分享!

使用特权

评论回复
地板
Pulitzer| | 2024-10-4 16:09 | 只看该作者
小华半导体的MCU我还没用过,看了这篇文章有点兴趣了,回去试试看!

使用特权

评论回复
5
Clyde011| | 2024-10-4 16:09 | 只看该作者
代码很清楚,不过如果用DMA会不会效率更高呢?后续能不能写个带DMA的例子?

使用特权

评论回复
6
公羊子丹| | 2024-10-4 16:09 | 只看该作者
这个UART代码的框架用起来很方便,我觉得可以直接套用在其他项目上。

使用特权

评论回复
7
周半梅| | 2024-10-4 16:10 | 只看该作者
小华的MCU价格确实不错,之前就听说了,看来功能也挺强大。

使用特权

评论回复
8
帛灿灿| | 2024-10-4 16:10 | 只看该作者
每秒发送一次数据的这个功能我觉得在调试的时候特别方便,能实时监控数据传输

使用特权

评论回复
9
童雨竹| | 2024-10-4 16:10 | 只看该作者
不知道这套代码如果配合FreeRTOS会不会更好用,有没有人试过?

使用特权

评论回复
10
万图| | 2024-10-4 16:10 | 只看该作者
虽然只是个简单的例子,但对我这种新手来说,已经足够用了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

3819

帖子

0

粉丝