Modbus 0.3
Библиотека Modbus для STM
Loading...
Searching...
No Matches
RS Tools

Всякое для работы по UART/RS. More...

Collaboration diagram for RS Tools:

Topics

 Tools for debug RS/UART/TIM
 Дефайны для отладки периферии

Classes

struct  RS_FlagsTypeDef
 Struct for flags RS. More...
struct  RS_HandleTypeDef
 Handle for RS communication. More...

Macros

#define RS_EnableReceive()
 Функция изменения направления передачи на ПРИЕМ для RS-485.
#define RS_EnableTransmit()
 Функция изменения направления передачи на ПЕРЕДАЧУ для RS-485.
#define RS_MASTER_MODE_START   0x3
 Начало режимов мастера (до него - режим слейв)

Enumerations

enum  RS_StatusTypeDef {
  RS_OK = 0x01 , RS_ERR , RS_ABORTED , RS_BUSY ,
  RS_SKIP , RS_TIMEOUT , RS_COLLECT_MSG_ERR , RS_PARSE_MSG_ERR
}
 Enums for respond CMD about RS status. More...
enum  RS_ModeTypeDef { RS_SLAVE_ALWAYS_WAIT = 0x01 , RS_RESERVED = 0x02 , RS_MASTER_REQUEST = 0x03 }
 Enums for RS Modes. More...
enum  RS_AbortTypeDef { ABORT_TX = 0x01 , ABORT_RX = 0x02 , ABORT_RX_TX = 0x03 , ABORT_RS = 0x04 }
 Enums for Abort modes. More...

Functions

RS_StatusTypeDef RS_Response (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
 Пользовательская функция для ответа на запрос по UART.
__weak RS_StatusTypeDef RS_Response_Callback (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
RS_StatusTypeDef RS_Collect_Message (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)
 Пользовательская функция для сбора сообщения в буфер UART.
RS_StatusTypeDef RS_Parse_Message (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)
 Пользовательская функция для парса сообщения из буфера UART.
RS_StatusTypeDef RS_Receive_IT (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
 Начать прием по прерываниям.
RS_StatusTypeDef RS_Transmit_IT (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
 Начать передачу по прерываниям.
RS_StatusTypeDef RS_Init (RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim, uint8_t *pRS_BufferPtr)
 Инициалазация структуры RS_HandleTypeDef.
RS_StatusTypeDef RS_Abort (RS_HandleTypeDef *hRS, RS_AbortTypeDef AbortMode)
 Отменить прием/передачу RS/UART.
RS_StatusTypeDef RS_Handle_Receive_Start (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
 Обработчик для начала приема.
RS_StatusTypeDef RS_Handle_Transmit_Start (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
 Обработчик для начала передачи.
RS_StatusTypeDef RS_UART_TxCpltCallback (RS_HandleTypeDef *hRS)
 UART TX Callback: коллбек после окончания передачи.
void RS_UART_Handler (RS_HandleTypeDef *hRS)
 Обработчик прерывания UART.
void RS_TIM_Handler (RS_HandleTypeDef *hRS)
 Обработчик прерывания TIM.
RS_StatusTypeDef RS_Timeout_Start (RS_HandleTypeDef *hRS)
 Запуск таймаута приема.
RS_StatusTypeDef RS_Timeout_Stop (RS_HandleTypeDef *hRS)
 Остановка таймаута приема.
RS_StatusTypeDef RS_Timeout_Update (RS_HandleTypeDef *hRS)
 Обновление (сброс) таймаута приема.

Variables

RS_HandleTypeDef hmodbus1
 Default Handle for Modbus.

Detailed Description

Всякое для работы по UART/RS.

Универсальная библиотека для работы с последовательными протоколами (Modbus, Custom) через UART в режиме прерываний с поддержкой таймаутов.

Основные возможности:

  • Прием/передача в прерываниях
  • Обработка IDLE линии для определения конца фрейма
  • Таймауты приема через TIM
  • Гибкая настройка размера сообщений

Использование:

  1. Определить структуру сообщения и размеры буфера
  2. Реализовать weak-функции обработки сообщений
  3. Добавить вызовы RS_UART_Handler/RS_TIM_Handler в прерывания
  4. Инициализировать через RS_Init() и запустить прием RS_Receive_IT()

Особенности:

  • Буфер: RS_Buffer[MSG_SIZE_MAX] Общий для приема/передачи
  • Состояния: отслеживается через флаги в RS_HandleTypeDef
  • Таймауты: контролируют максимальное время ожидания фрейма

Macro Definition Documentation

◆ RS_EnableReceive

#define RS_EnableReceive ( )

Функция изменения направления передачи на ПРИЕМ для RS-485.

Definition at line 150 of file rs_message.h.

◆ RS_EnableTransmit

#define RS_EnableTransmit ( )

Функция изменения направления передачи на ПЕРЕДАЧУ для RS-485.

Definition at line 153 of file rs_message.h.

◆ RS_MASTER_MODE_START

#define RS_MASTER_MODE_START   0x3

Начало режимов мастера (до него - режим слейв)

Definition at line 181 of file rs_message.h.

Enumeration Type Documentation

◆ RS_StatusTypeDef

Enums for respond CMD about RS status.

Definition at line 163 of file rs_message.h.

◆ RS_ModeTypeDef

Enums for RS Modes.

Enumerator
RS_SLAVE_ALWAYS_WAIT 

Слейв в постоянном ожидании

RS_RESERVED 

резерв

RS_MASTER_REQUEST 

Мастер с ручным запросом

Definition at line 183 of file rs_message.h.

◆ RS_AbortTypeDef

Enums for Abort modes.

Enumerator
ABORT_TX 

Отменить передачу

ABORT_RX 

Отменить прием

ABORT_RX_TX 

Отменить прием и передачу

ABORT_RS 

Отменить любую работу UART в целом

Definition at line 192 of file rs_message.h.

Function Documentation

◆ RS_Response()

RS_StatusTypeDef RS_Response ( RS_HandleTypeDef * hRS,
RS_MsgTypeDef * RS_msg )

Пользовательская функция для ответа на запрос по UART.

Parameters
hRSУказатель на хендлер RS.
RS_msgУказатель на структуру сообщения.
Returns
RS_RES Статус о результате ответа на комманду.

Definition at line 184 of file modbus.c.

◆ RS_Collect_Message()

RS_StatusTypeDef RS_Collect_Message ( RS_HandleTypeDef * hRS,
RS_MsgTypeDef * RS_msg,
uint8_t * msg_uart_buff )

Пользовательская функция для сбора сообщения в буфер UART.

Parameters
hRSУказатель на хендлер RS.
RS_msgУказатель на структуру сообщения.
msg_uart_buffУказатель на буффер UART.
Returns
RS_RES Статус о результате заполнения буфера.

Definition at line 193 of file modbus.c.

◆ RS_Parse_Message()

RS_StatusTypeDef RS_Parse_Message ( RS_HandleTypeDef * hRS,
RS_MsgTypeDef * RS_msg,
uint8_t * msg_uart_buff )

Пользовательская функция для парса сообщения из буфера UART.

Parameters
hRSУказатель на хендлер RS.
RS_msgУказатель на структуру сообщения.
msg_uart_buffУказатель на буффер UART.
Returns
RS_RES Статус о результате заполнения структуры.

Definition at line 205 of file modbus.c.

◆ RS_Receive_IT()

RS_StatusTypeDef RS_Receive_IT ( RS_HandleTypeDef * hRS,
RS_MsgTypeDef * RS_msg )

Начать прием по прерываниям.

Parameters
hRSУказатель на хендлер RS.
RS_msgУказатель на структуру сообщения.
Returns
RS_RES Статус о состоянии RS после инициализации приема.

Definition at line 43 of file rs_message.c.

◆ RS_Transmit_IT()

RS_StatusTypeDef RS_Transmit_IT ( RS_HandleTypeDef * hRS,
RS_MsgTypeDef * RS_msg )

Начать передачу по прерываниям.

Parameters
hRSУказатель на хендлер RS.
RS_msgУказатель на структуру сообщения.
Returns
RS_RES Статус о состоянии RS после инициализации передачи.

Definition at line 91 of file rs_message.c.

◆ RS_Init()

RS_StatusTypeDef RS_Init ( RS_HandleTypeDef * hRS,
UART_HandleTypeDef * huart,
TIM_HandleTypeDef * htim,
uint8_t * pRS_BufferPtr )

Инициалазация структуры RS_HandleTypeDef.

Parameters
hRSУказатель на хендлер RS.
suartУказатель на структуру с настройками UART.
stimУказатель на структуру с настройками таймера.
pRS_BufferPtrУказатель на буффер для приема-передачи по UART. Если он NULL, то поставиться библиотечный буфер.
Returns
RS_RES Статус о состоянии RS после инициализации.

Инициализация перефирии и структуры для приема-передачи по RS.

Definition at line 156 of file rs_message.c.

◆ RS_Abort()

RS_StatusTypeDef RS_Abort ( RS_HandleTypeDef * hRS,
RS_AbortTypeDef AbortMode )

Отменить прием/передачу RS/UART.

Parameters
hRSУказатель на хендлер RS.
AbortModeВыбор, что надо отменить.
  • ABORT_TX: Отмена передачи по ЮАРТ, с очищением флагов TX,
  • ABORT_RX: Отмена приема по ЮАРТ, с очищением флагов RX,
  • ABORT_RX_TX: Отмена приема и передачи по ЮАРТ,
  • ABORT_RS: Отмена приема-передачи RS, с очищением всей структуры.
Returns
RS_RES Статус о состоянии RS после аборта.

Отмена работы UART в целом или отмена приема/передачи RS. Также очищается хендл hRS.

Definition at line 193 of file rs_message.c.

◆ RS_Handle_Receive_Start()

RS_StatusTypeDef RS_Handle_Receive_Start ( RS_HandleTypeDef * hRS,
RS_MsgTypeDef * RS_msg )

Обработчик для начала приема.

Parameters
hRSУказатель на хендлер RS.
RS_msgУказатель на структуру сообщения.
Returns
RS_RES Статус о состоянии RS после инициализации приема или окончания общения.

Определяет начинать прием команды/ответа или нет.

Definition at line 237 of file rs_message.c.

◆ RS_Handle_Transmit_Start()

RS_StatusTypeDef RS_Handle_Transmit_Start ( RS_HandleTypeDef * hRS,
RS_MsgTypeDef * RS_msg )

Обработчик для начала передачи.

Parameters
hRSУказатель на хендлер RS.
RS_msgУказатель на структуру сообщения.
Returns
RS_RES Статус о состоянии RS после инициализации передачи.

Определяет отвечать ли на команду или нет.

Definition at line 269 of file rs_message.c.

◆ RS_UART_TxCpltCallback()

RS_StatusTypeDef RS_UART_TxCpltCallback ( RS_HandleTypeDef * hRS)

UART TX Callback: коллбек после окончания передачи.

Parameters
hRSУказатель на хендлер RS.
Returns
RS_RES Статус о состоянии RS после обработки приема.

Определяет поведение RS после передачи сообщения.

Definition at line 300 of file rs_message.c.

◆ RS_UART_Handler()

void RS_UART_Handler ( RS_HandleTypeDef * hRS)

Обработчик прерывания UART.

Parameters
hRSУказатель на хендлер RS.

Обрабатывает ошибки если есть и вызывает RS Коллбеки. Добавить вызов этой функции в UARTx_IRQHandler() ВМЕСТО HAL_UART_IRQHandler().

Definition at line 320 of file rs_message.c.

◆ RS_TIM_Handler()

void RS_TIM_Handler ( RS_HandleTypeDef * hRS)

Обработчик прерывания TIM.

Parameters
hRSУказатель на хендлер RS.

Попадание сюда = таймаут и перезапуск RS приема Добавить вызов этой функции в TIMx_IRQHandler() ВМЕСТО HAL_TIM_IRQHandler().

Definition at line 433 of file rs_message.c.

◆ RS_Timeout_Start()

RS_StatusTypeDef RS_Timeout_Start ( RS_HandleTypeDef * hRS)

Запуск таймаута приема.

Parameters
hRSУказатель на хендлер RS.
Returns
RS_RES Статус операции.

Запускает таймер для отсчета времени ожидания следующего байта.

Definition at line 471 of file rs_message.c.

◆ RS_Timeout_Stop()

RS_StatusTypeDef RS_Timeout_Stop ( RS_HandleTypeDef * hRS)

Остановка таймаута приема.

Parameters
hRSУказатель на хендлер RS.
Returns
RS_RES Статус операции.

Останавливает таймер ожидания.

Definition at line 491 of file rs_message.c.

◆ RS_Timeout_Update()

RS_StatusTypeDef RS_Timeout_Update ( RS_HandleTypeDef * hRS)

Обновление (сброс) таймаута приема.

Parameters
hRSУказатель на хендлер RS.
Returns
RS_RES Статус операции.

Сбрасывает счетчик таймера в 0.

Definition at line 509 of file rs_message.c.

Variable Documentation

◆ hmodbus1

RS_HandleTypeDef hmodbus1
extern

Default Handle for Modbus.

Definition at line 24 of file modbus.c.