STM32F103 有 3 个 UART 外设:USART1、USART2、USART3

起始位(1位) + 数据位(8位) + 校验位(可选) + 停止位(1或2)

UART 是由硬件外设 USART 模块生成和采样数据的,它的 TX/RX 必须连接在芯片内部固定的数字线路上。

功能默认引脚
TXPA9
RXPA10

UART(USART)是一个全双工(Full Duplex)协议可以同时传输数据,互不影响。异步传输。

配置教程

1.打开stm32cubeMX的主页面配置uart协议通信

2.配置波特率,传输格式,最常见的是 8N1 帧格式,即

8 数据位、N = No parity不校验、1 停止位

3.点击直接生成代码

4.打开keil5会发现多了一个uart.c文件,且里面已经配置好参数

5.定义接收和发送的变量

uint8_t tx_data[10] = "hello\r\n";   // 要发送的数据
uint8_t rx_data[10];               // 接收缓冲区

6.初始化协议

 MX_USART1_UART_Init();

7.发送字符函数

HAL_UART_Transmit(&huart1, tx_data, strlen((char*)tx_data), 100);

8.接收字符函数

HAL_UART_Receive(&huart1, rx_data, 1, 100);

9.写一个接收字符成功的案例代码

 if (HAL_UART_Receive(&huart1, rx_data, 1, 100) == HAL_OK)
    {
        /* 接收到的数据第一位是否为 'a' ? */
        if (rx_data[0] == 'a')
        {
            //执行你需要做的内容
        }

        /* 清空缓冲区(避免旧数据干扰) */
        memset(rx_data, 0, sizeof(rx_data));
    }

10.写一个发送hello的demo
 

uint8_t tx_data[] = "hello\r\n";   // 要发送的数据
HAL_UART_Transmit(&huart1, tx_data, strlen((char*)tx_data), 100);    // 发送数据命令

谢谢大家,我会继续努力跟新教程

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐