diff --git a/README.md b/README.md index 7a9ca99..0690d66 100644 --- a/README.md +++ b/README.md @@ -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;