-
released this
2026-03-31 12:40:54 +03:00 | 0 commits to CAN_Protocol since this releaseОписание релиза
Это предварительный релиз библиотеки для работы по новому протоколу CAN.
Протокол.Основной функционал
- Инициализация библиотеки и периферийных устройств
- Обработка сообщений по CAN в бесконечном цикле
- Возможность переопределения обработчиков для различных типов сообщений
Использование
Инициализация
После инициализации периферии и запуска CAN необходимо вызвать функцию инициализации.
Функция:
PROTOCAN_INIT_StatusTypeDef PROTOCAN_INIT(CAN_HandleTypeDef *tmp_hcan, RTC_HandleTypeDef *tmp_hrtc, TIM_HandleTypeDef *tmp_tim)Параметры:
- tmp_hcan — указатель на используемый hcan.
- tmp_hrtc — указатель на используемый hrtc.
- tmp_tim — указатель на используемый htim (Допустим NULL, если в проекте не используются Tim Register Callback)
Приём сообщений по CAN при использовании Can Register Callback происходит в функции ProtoCanRxFifo0MsgPendingCallback. Если Can Register Callback не используется, то необходимо самостоятельно вызывать функцию в стандартном Callback приёма сообщения.
Указанный таймер используется для отслеживания времени перед передачей пульса устройства по CAN. В случае, если пользователь не использует Tim Register Callback, то для отправки пульса необходимо самостоятельно вызывать функцию ProtoCanPulseCallback в HAL_TIM_PeriodElapsedCallback любого, выбранного пользователем для пульсации, таймера.
Запуск основного цикла обработки
Чтобы начать обработку входящих сообщений, вызовите:
PROTOCAN_LOOP();
Это — бесконечный цикл, в рамках которого обрабатываются входящие сообщения по CAN.Обработка сообщений
Внутри цикла вызываются __weak функции, которые можно переопределять для обработки различных типов сообщений:
Функция Назначение ProtoCanMsgToBroadcastStatus Обработка запроса статуса по широковещательной рассылке ProtoCanMsgToBroadcastOnOff Включение/выключение пульса ProtoCanMsgToBroadcastRestart Перезапуск системы ProtoCanMsgToBroadcastRtcSetup Настройка RTC через CAN ProtoCanMsgToDiscreteAccident Обработка запроса аварийных сообщений ProtoCanMsgToDiscreteWarning Обработка запроса предупреждающих сообщений ProtoCanMsgToDiscreteControlSignals Обработка запроса управляющих сигналов ProtoCanMsgToDiscreteFlags Обработка запроса флагов ProtoCanMsgToDiscreteReset Обработка запроса перезапуска устройства ProtoCanMsgToDiscreteChangeMode Обработка запроса изменение режима работы ProtoCanMsgToDiscreteRequestListOfParameters Обработка запроса параметров системы ProtoCanMsgToAnalogUniversal Обработка универсального запроса ProtoCanMsgToAnalogUSTAVKI Обработка запроса уставок ProtoCanMsgToAnalogUSens Обработка запроса данных датчиков напряжения ProtoCanMsgToAnalogISens Обработка запроса данных датчиков тока ProtoCanMsgToAnalogTSens Обработка запроса данных датчиков температуры ProtoCanMsgToModbusCoil Обработка Modbus Coil ProtoCanMsgToModbusDiscrete Обработка Modbus Discrete ProtoCanMsgToModbusHolding Обработка Modbus Holding ProtoCanMsgToModbusInput Обработка Modbus Input Downloads