最近我在学习使用ChipON的MCU,做了一个简易的串口通信项目,分享一下代码和心得。这个项目主要是通过串口发送和接收数据,实现MCU与PC之间的通信。对于初学者来说,这个例子能帮助大家更好地理解串口通信的基本概念和如何在ChipON MCU上进行配置。
硬件准备:- ChipON MCU开发板
- USB转TTL模块(用于PC连接)
- 若干杜邦线
软件环境:
串口通信的主要步骤:- 初始化串口外设
通过配置MCU的UART外设,设置波特率、数据位、停止位等参数。
- 发送数据
通过MCU向PC发送一段固定字符串,验证串口发送功能。
- 接收数据
通过串口调试助手向MCU发送数据,MCU接收到数据后将其返回,验证接收功能。
核心代码:#include "chipon.h"
UART_HandleTypeDef huart1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
uint8_t txData[] = "Hello from ChipON MCU!\r\n";
uint8_t rxData[100];
while (1)
{
// 发送数据到PC
HAL_UART_Transmit(&huart1, txData, sizeof(txData) - 1, HAL_MAX_DELAY);
HAL_Delay(1000); // 延时1秒
// 接收PC发送的数据
if (HAL_UART_Receive(&huart1, rxData, sizeof(rxData), 1000) == HAL_OK)
{
// 收到数据后再发送回PC
HAL_UART_Transmit(&huart1, rxData, sizeof(rxData), HAL_MAX_DELAY);
}
}
}
static void MX_USART1_UART_Init(void)
{
huart1.Instance = USART1;
huart1.Init.BaudRate = 9600;
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;
HAL_UART_Init(&huart1);
}
主要功能说明:- UART初始化:配置串口1为9600波特率,8数据位,1停止位,无校验位。
- 发送功能:通过HAL_UART_Transmit函数,将字符串"Hello from ChipON MCU!"发送到PC。
- 接收功能:通过HAL_UART_Receive接收PC发送的任意字符,并通过串口回传。
实验结果:- 在串口调试助手上可以看到MCU每秒发送一次"Hello from ChipON MCU!"。
- 向MCU发送任意字符,MCU会自动将收到的字符回传给PC。
总结:
这次实验帮助我熟悉了ChipON MCU的UART配置和基本的串口通信流程。ChipON的外设库使用起来非常方便,代码结构也很清晰,适合做一些入门项目。如果你也在学习这款MCU,不妨试试这个例子。
有问题的话,大家一起交流讨论!
|