打印
[KungFu8位 MCU]

基于ChipON MCU的UART串口通信应用实例

[复制链接]
3004|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wordsworth|  楼主 | 2024-10-4 15:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

最近我在使用ChipON MCU进行项目开发,想分享一个使用它进行UART串口通信的简单应用。这块MCU集成度高,功能强大,适合各种低功耗嵌入式应用。下面是一个简单的代码示例,用于实现UART串口的初始化和数据发送接收。

代码说明:
这个代码配置了UART,并通过中断方式实现数据接收和发送,可以很方便地与外设通信,比如PC或者其他单片机。

#include "chipon_uart.h"

UART_HandleTypeDef huart1;
uint8_t rx_data;

void SystemClock_Config(void);
void UART1_Init(void);
void Error_Handler(void);

int main(void) {
    HAL_Init();                       // 初始化HAL库
    SystemClock_Config();             // 系统时钟配置
    UART1_Init();                     // 初始化UART1

    while (1) {
        // 主循环可以放置其他逻辑或任务
    }
}

// 初始化UART
void UART1_Init(void) {
    huart1.Instance = USART1;                              // 使用USART1
    huart1.Init.BaudRate = 115200;                         // 设置波特率为115200
    huart1.Init.WordLength = UART_WORDLENGTH_8B;           // 字长8位
    huart1.Init.StopBits = UART_STOPBITS_1;                // 停止位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;       // 16倍过采样
    if (HAL_UART_Init(&huart1) != HAL_OK) {
        Error_Handler();                                   // 初始化失败则进入错误处理
    }

    // 启动接收中断
    HAL_UART_Receive_IT(&huart1, &rx_data, 1);
}

// 中断回调函数:接收数据并回显
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
    if (huart->Instance == USART1) {
        HAL_UART_Transmit(&huart1, &rx_data, 1, HAL_MAX_DELAY);  // 回显接收到的数据
        HAL_UART_Receive_IT(&huart1, &rx_data, 1);               // 重新启动接收中断
    }
}

// 错误处理函数
void Error_Handler(void) {
    while (1) {
        // 错误处理,可以设置一个LED闪烁提示
    }
}

// 系统时钟配置函数
void SystemClock_Config(void) {
    // 时钟配置代码
}
主要功能:
  • 初始化ChipON MCU的UART1,波特率设为115200。
  • 通过中断方式接收数据并回显,可以方便地与外部设备进行通信。
  • 实现了简单的串口收发数据功能,适合用于调试和基本的通信应用。

总结:
这段代码非常适合初学者,UART是嵌入式开发中非常常用的功能。使用ChipON MCU时,只需要几行配置代码就能实现串口通信,并且支持中断处理方式,进一步节省了CPU资源。你也可以根据需求修改波特率、校验位等参数来适应不同的应用场景。

如果你在开发过程中遇到问题或者有其他ChipON MCU相关的需求,欢迎一起讨论!

使用特权

评论回复
沙发
公羊子丹| | 2024-10-4 15:34 | 只看该作者
这个例子太实用了,刚好我也在研究ChipON的串口通信,立马试试!

使用特权

评论回复
板凳
周半梅| | 2024-10-4 15:34 | 只看该作者
串口通信真的是最常用的功能之一,代码看起来清晰易懂,感谢分享!

使用特权

评论回复
地板
帛灿灿| | 2024-10-4 15:35 | 只看该作者
我之前没用过ChipON的MCU,看了这段代码,感觉入门挺简单的,准备入手试试。

使用特权

评论回复
5
童雨竹| | 2024-10-4 15:35 | 只看该作者
代码里的中断处理真的是个亮点,节省了不少资源,我之前一直用的轮询方式,这个更高效!

使用特权

评论回复
6
Bblythe| | 2024-10-4 15:35 | 只看该作者
请问如果要换成UART2或者其他串口的话,配置有啥特别需要注意的吗?

使用特权

评论回复
7
Pulitzer| | 2024-10-4 15:35 | 只看该作者
UART的波特率设置为115200还挺常用的,平时调试用这个刚好够,感谢分享!

使用特权

评论回复
8
万图| | 2024-10-4 15:36 | 只看该作者
一直想搞定串口的中断处理,这个代码简直就是我需要的,受教了!

使用特权

评论回复
9
Uriah| | 2024-10-4 15:36 | 只看该作者
好详细的代码注释,看得非常清楚,马上就能动手试一试了!

使用特权

评论回复
10
Clyde011| | 2024-10-4 15:36 | 只看该作者
不错啊,ChipON这块芯片之前接触不多,看到这个帖子感觉功能还挺丰富的。

使用特权

评论回复
11
钟爱柳州| | 2024-10-8 08:55 | 只看该作者
Bblythe 发表于 2024-10-4 15:35
请问如果要换成UART2或者其他串口的话,配置有啥特别需要注意的吗?

要换成USART2,注意端口重映射

使用特权

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

本版积分规则

34

主题

3714

帖子

1

粉丝