登录/注册

STM32F103RS485

STM32F103RS485

更多

在STM32F103上实现RS485通信,需遵循以下步骤:


1. 硬件连接


2. 软件配置(以HAL库为例)

2.1 初始化USART和GPIO

#include "stm32f1xx_hal.h"

UART_HandleTypeDef huart1;

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;
  HAL_UART_Init(&huart1);
}

void HAL_UART_MspInit(UART_HandleTypeDef *huart) {
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  if (huart->Instance == USART1) {
    __HAL_RCC_USART1_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOC_CLK_ENABLE(); // RS485控制引脚时钟

    // 配置PA9(TX)和PA10(RX)
    GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    // 配置PC13作为RS485收发控制引脚
    GPIO_InitStruct.Pin = GPIO_PIN_13;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // 初始化为接收模式
  }
}

2.2 实现收发模式切换函数

// 设置RS485为发送模式
void RS485_SetTxMode(void) {
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); // DE/RE=1 (发送)
}

// 设置RS485为接收模式
void RS485_SetRxMode(void) {
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // DE/RE=0 (接收)
}

2.3 发送数据(含模式切换)

void RS485_SendData(uint8_t *data, uint16_t size) {
  RS485_SetTxMode();              // 切换到发送模式
  HAL_UART_Transmit(&huart1, data, size, HAL_MAX_DELAY);
  HAL_UART_Receive(&huart1, data, 1, 10); // 小技巧:等待最后一字节发送完成
  RS485_SetRxMode();              // 切回接收模式
}

2.4 接收数据

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

3. 关键注意事项


4. 常见问题解决

通过上述步骤,可稳定实现STM32F103的RS485通信。实际应用中建议结合具体协议(如Modbus RTU)进行数据封装和解析。

STM32F103上位机升级,RS485升级、CAN升级

STM32F103_IAP开发板,用STM32F103RCT6主控芯片,例程用标准库开发。基本串口RS232\\

2025-01-03 08:57:19

STM32F103VET6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F103RCT6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

0.2-STM32F103x8功能及通信功能接线图

DS5319_STM32F103x8,STM32F103xB单片机数据手册STM32F103x8功能通信功能接线图接线图截选自洋桃电子开放课程

资料下载 李维嘉 2022-01-14 13:38:29

基于STM32F103单片机的智能温室大棚RS485通信温湿度监测

系统功能设计(末尾附文件)STM32单片机智能大棚485上传温湿度光照检测补光本系统由STM32单片机

资料下载 贾小龙 2021-12-27 18:25:15

基于STM32f103的FFT频率测试程序下载

基于STM32f103的FFT频率测试程序下载

资料下载 shyshyshy 2021-08-02 10:07:20

基于ARM的32位MCU芯片STM32F103x4/103x6

基于ARM的32位MCU芯片STM32F103x4/103x6

资料下载 jf_42320578 2021-05-21 15:32:12

使用STM32F429V实现RS485RS232的电路原理图免费下载

本文档的主要内容详细介绍的是使用STM32F429V实现RS485转RS232的电路原理图免费下载。

资料下载 佚名 2020-11-05 17:35:00

RS485通讯调试记录

硬件测试环境:stm32f407野火开发板,rs485转usb工具和rs485温湿度传感器。

2023-07-23 13:08:25

STM32F103C8微控制器中使用RS-485串行通信

在本教程中,Master STM32F103C8 具有三个按钮,用于通过使用 RS-485 串行通信来控制 Slave Arduino Uno 上的三个 LED 的状态。

2022-09-06 15:31:02

MT8071ip与stm32f103的接线关系

1、威纶通与正点原子stm32f103的接线关系:威纶通的针脚1接stm32f103开发板的RS485的A端口,针脚2接

2022-01-14 09:29:53

STM32F103x8单片机的功能

DS5319_STM32F103x8,STM32F103xB单片机数据手册STM32F103x8功能通信功能接线图接线图截选自洋桃电子开放课程

2022-01-14 09:04:28

STM32F103通信协议

总体思路:主机:STM32F407从机:STM32F103通信协议:RS485主机-----串口2----

2021-08-24 06:25:24

RS485通信硬件实现

:STM32F103C8T6/VET6AD:Altium Designer 18.0.12回到顶部1、RS485简介   RS-485又名TIA

2021-08-19 08:20:09

stm32f030和stm32f103功能差异

stm32f030和stm32f103功能差异主要表现在哪?

2021-07-22 09:35:47

7天热门专题 换一换
相关标签