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