stm32串口发送数据hal库
时间: 2025-03-27 07:35:07 浏览: 9
使用 HAL 库在 STM32 上实现 UART 串口发送数据
为了实现在 STM32 上使用 HAL 库通过 UART 发送数据的功能,可以按照以下方法编写代码。此过程涉及配置 UART 接口并调用 HAL_UART_Transmit
函数来传输数据。
初始化 UART 配置
首先,在项目中定义 UART 的参数设置,包括波特率、字长、停止位等:
UART_HandleTypeDef huart1;
void MX_USART1_UART_Init(void)
{
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200; // 设置波特率为 115200 bps
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;
if (HAL_UART_Init(&huart1) != HAL_OK) {
Error_Handler(); // 如果初始化失败则进入错误处理函数
}
}
这段代码完成了对 USART1 实例的创建以及基本属性设定,并尝试对其进行初始化操作[^4]。
数据发送函数
接着,构建一个简单的字符串发送函数,利用 HAL_UART_Transmit
来完成实际的数据传送动作:
#include "string.h"
void SendString(const char* str)
{
HAL_StatusTypeDef status;
uint16_t length = strlen(str);
status = HAL_UART_Transmit(&huart1, (uint8_t*)str, length, HAL_MAX_DELAY);
if(status != HAL_OK){
/* Transfer error in transmission process */
Error_Handler();
}
}
这里实现了将给定 C 字符串作为参数传递给该函数后将其转换成适合 UART 发送的形式并通过指定好的 UART 设备发出[^3]。
主循环中的调用
最后可以在主程序里适当位置调用上述自定义的 SendString()
方法来进行测试性的消息输出:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
while (1)
{
SendString("Hello from STM32!\r\n");
HAL_Delay(1000); // 暂停一秒再重复发送下一条信息
}
}
这样就可以每秒钟向连接至 PC 或其他设备上的终端模拟器发送一次问候语句了[^1]。
相关推荐
















