Обновить README.md

This commit is contained in:
2026-02-20 11:26:15 +03:00
parent 36db3964ea
commit ca8fa259c8

View File

@@ -56,16 +56,15 @@ ProjectRoot/
```
### 3. **Настройте конфигурацию** под ваш проект:
#### 3.1. Настройка периферии
#### 3.1. Настройка периферии
- **UART**: Настройте в режиме Asynchronous, нужная скорость (9600, 19200, etc), 8N1
- **TIM**: Настройте таймер для генерации прерываний (например, 1ms tick)
- **Включите прерывания** для UART и TIM
- **UART**: Настройте в режиме Asynchronous, нужная скорость (9600, 19200, etc), 8N1
- **TIM**: Настройте таймер для генерации прерываний (например, 1ms tick)
- **Включите прерывания** для UART и TIM
#### 3.2. Подключение обработчиков прерываний
Подключите обработчики прерываний **UART** и **TIM** в свои IRQ обработчики ***вместо*** HAL-обработчиков:
#### 3.2. Подключение обработчиков прерываний
Подключите обработчики прерываний **UART** и **TIM** в свои IRQ обработчики ***вместо*** HAL-обработчиков:
```c
#include "modbus.h"
@@ -83,11 +82,11 @@ void TIMx_IRQHandler(void)
HAL_TIM_IRQHandler(&htim);
}
```
#### 3.3. В `modbus_config.h` укажите параметры устройства
#### 3.3. В `modbus_config.h` укажите параметры устройства
#### 3.4. Инициализация в коде
Чтобы настроить Slave-режим `main()` после инициализации HAL:
#### 3.4. Инициализация в коде
Чтобы настроить Slave-режим `main()` после инициализации HAL:
```c
#include "modbus.h"
@@ -120,7 +119,7 @@ int main(void)
}
}
```
Чтобы настроить Master-режим `main()` после инициализации HAL:
Чтобы настроить Master-режим `main()` после инициализации HAL:
```c
#include "modbus.h"
@@ -176,11 +175,11 @@ int main(void)
}
```
#### 3.5. Настройка карты данных (только для режима Slave)
#### 3.5. Настройка карты данных (только для режима Slave)
В `modbus_data.h` настройте регистры и coils под ваше устройство:
В `modbus_data.h` настройте регистры и coils под ваше устройство:
**Input Registers (только чтение)**
**Input Registers (только чтение)**
```c
typedef struct
{
@@ -193,7 +192,7 @@ typedef struct
#define R_INPUT_ADDR 0 // Начальный адрес Input регистров
#define R_INPUT_QNT 4 // Количество Input регистров
```
**Holding Registers (чтение/запись)**
**Holding Registers (чтение/запись)**
```c
typedef struct
{
@@ -205,7 +204,7 @@ typedef struct
#define R_HOLDING_ADDR 0 // Начальный адрес Holding регистров
#define R_HOLDING_QNT 3 // Количество Holding регистров
```
**Coils (1-битные)**
**Coils (1-битные)**
```c
typedef struct
{
@@ -219,9 +218,9 @@ typedef struct
#define C_COILS_ADDR 0 // Начальный адрес Coils
#define C_COILS_QNT 4 // Количество Coils
```
#### 3.6. Доступ к данным в коде
#### 3.6. Доступ к данным в коде
В режиме **слейва** есть дефайны для удобного выставления Коилов. На случай если они не упакованы в битовые поля
В режиме **слейва** есть дефайны для удобного выставления Коилов. На случай если они не упакованы в битовые поля
```c
// Чтение входных регистров
uint16_t temp = MB_DATA.InRegs.Temperature;
@@ -238,7 +237,7 @@ if (MB_Coil_Read_Local(&MB_DATA.Coils, 2)) {
// Pump включен
}
```
В режиме **мастера** есть функции для получения информации из ответа `MB_RespGet_...()`
В режиме **мастера** есть функции для получения информации из ответа `MB_RespGet_...()`
```c
// Чтение регистров: Получить запрошенные регистры
uint16_t value;