[STM32G4] UART 接口与传感器连接

[复制链接]
870|3
 楼主| 慢动作 发表于 2024-11-21 01:09 | 显示全部楼层 |阅读模式
UART 通信简介
UART(Universal Asynchronous Receiver/Transmitter)是一种常用的串行通信协议,广泛应用于各种传感器,如 GPS 模块、温湿度传感器等。UART 使用两根线:TX(发送)和 RX(接收)。

硬件设计
UART 引脚配置:
STM32F030F4P6 的 UART 支持在 PA9 (TX) 和 PA10 (RX) 引脚上进行连接。
传感器连接:
UART 传感器通常只有 TX 和 RX 两根线,连接到 STM32 的对应引脚。

 楼主| 慢动作 发表于 2024-11-21 01:09 | 显示全部楼层
代码示例
假设连接一个 HC-05 蓝牙模块,用于串口通信:

1. 初始化 UART 接口
在 STM32CubeMX 中启用 UART 外设,选择 USART1,然后生成代码。
 楼主| 慢动作 发表于 2024-11-21 01:10 | 显示全部楼层
发送和接收数据
c
复制代码
#include "stm32f0xx_hal.h"

/* UART 句柄 */
extern UART_HandleTypeDef huart1;

void UART_SendData(const char *data)
{
    HAL_UART_Transmit(&huart1, (uint8_t*)data, strlen(data), HAL_MAX_DELAY);
}

void UART_ReceiveData(char *buffer, uint16_t size)
{
    HAL_UART_Receive(&huart1, (uint8_t*)buffer, size, HAL_MAX_DELAY);
}
 楼主| 慢动作 发表于 2024-11-21 01:10 | 显示全部楼层
在主程序中使用:#include "stm32f0xx_hal.h"

/* UART 句柄 */
extern UART_HandleTypeDef huart1;

void UART_SendData(const char *data)
{
    HAL_UART_Transmit(&huart1, (uint8_t*)data, strlen(data), HAL_MAX_DELAY);
}

void UART_ReceiveData(char *buffer, uint16_t size)
{
    HAL_UART_Receive(&huart1, (uint8_t*)buffer, size, HAL_MAX_DELAY);
}

int main(void)
{
    HAL_Init();
   
    /* 配置 UART,初始化外设 */
    MX_USART1_UART_Init();

    char rxBuffer[100];
    char txBuffer[] = "Hello from STM32F030F4P6!\r\n";
   
    while (1)
    {
        // 发送数据到串口(比如蓝牙设备)
        UART_SendData(txBuffer);
        HAL_Delay(1000);  // 每秒发送一次

        // 接收数据
        UART_ReceiveData(rxBuffer, sizeof(rxBuffer) - 1);

        // 打印接收到的数据
        printf("Received: %s", rxBuffer);

        HAL_Delay(500);  // 休眠一段时间
    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

1071

帖子

0

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