[KungFu8位 MCU] 基于ChipON MCU的UART串口通信应用实例

[复制链接]
 楼主| Wordsworth 发表于 2024-10-4 15:33 | 显示全部楼层 |阅读模式

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

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

  1. #include "chipon_uart.h"

  2. UART_HandleTypeDef huart1;
  3. uint8_t rx_data;

  4. void SystemClock_Config(void);
  5. void UART1_Init(void);
  6. void Error_Handler(void);

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

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

  15. // 初始化UART
  16. void UART1_Init(void) {
  17.     huart1.Instance = USART1;                              // 使用USART1
  18.     huart1.Init.BaudRate = 115200;                         // 设置波特率为115200
  19.     huart1.Init.WordLength = UART_WORDLENGTH_8B;           // 字长8位
  20.     huart1.Init.StopBits = UART_STOPBITS_1;                // 停止位1位
  21.     huart1.Init.Parity = UART_PARITY_NONE;                 // 无校验位
  22.     huart1.Init.Mode = UART_MODE_TX_RX;                    // 使能发送和接收
  23.     huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;           // 无硬件流控
  24.     huart1.Init.OverSampling = UART_OVERSAMPLING_16;       // 16倍过采样
  25.     if (HAL_UART_Init(&huart1) != HAL_OK) {
  26.         Error_Handler();                                   // 初始化失败则进入错误处理
  27.     }

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

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

  38. // 错误处理函数
  39. void Error_Handler(void) {
  40.     while (1) {
  41.         // 错误处理,可以设置一个LED闪烁提示
  42.     }
  43. }

  44. // 系统时钟配置函数
  45. void SystemClock_Config(void) {
  46.     // 时钟配置代码
  47. }
主要功能:
  • 初始化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,看了这段代码,感觉入门挺简单的,准备入手试试。
童雨竹 发表于 2024-10-4 15:35 | 显示全部楼层
代码里的中断处理真的是个亮点,节省了不少资源,我之前一直用的轮询方式,这个更高效!
Bblythe 发表于 2024-10-4 15:35 | 显示全部楼层
请问如果要换成UART2或者其他串口的话,配置有啥特别需要注意的吗?
Pulitzer 发表于 2024-10-4 15:35 | 显示全部楼层
UART的波特率设置为115200还挺常用的,平时调试用这个刚好够,感谢分享!
万图 发表于 2024-10-4 15:36 | 显示全部楼层
一直想搞定串口的中断处理,这个代码简直就是我需要的,受教了!
Uriah 发表于 2024-10-4 15:36 | 显示全部楼层
好详细的代码注释,看得非常清楚,马上就能动手试一试了!
Clyde011 发表于 2024-10-4 15:36 | 显示全部楼层
不错啊,ChipON这块芯片之前接触不多,看到这个帖子感觉功能还挺丰富的。
钟爱柳州 发表于 2024-10-8 08:55 | 显示全部楼层
Bblythe 发表于 2024-10-4 15:35
请问如果要换成UART2或者其他串口的话,配置有啥特别需要注意的吗?

要换成USART2,注意端口重映射
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

5783

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部