Files
templates/c/protocan-transport/include/pcan_config.h
Andrey Kruchinkin 3dc636e012 feat(protocan-transport): транспортный уровень ProtoCAN и каталог GUI
Перенесён из репозитория protocan-transport, который подключался
сабмодулем в CAN_to_RS485.

Кадрирование AA 55 с CRC16 поверх любого байтового потока (RS485, RS232,
USB CDC), разбор 29-битного идентификатора, общее адресное пространство
регистров и каталог с подпиской на поток значений для SETGUI. Состояние
живёт в структурах вызывающего, поэтому в одной прошивке поднимается
сколько угодно независимых каналов. Порт STM32F4 (USART + DMA) в комплекте.

Хостовые тесты test_transport и test_gui проходят.
2026-08-23 01:15:35 +03:00

46 lines
1.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file pcan_config.h
* @brief Настройки времени компиляции.
*
* Значения по умолчанию рассчитаны на МК без ОС. Переопределяются
* либо через -D, либо через собственный pcan_config_user.h.
*/
#ifndef PCAN_CONFIG_H
#define PCAN_CONFIG_H
#if defined(PCAN_USE_USER_CONFIG)
#include "pcan_config_user.h"
#endif
/** Максимальная длина поля данных CAN. */
#ifndef PCAN_DATA_MAX
#define PCAN_DATA_MAX 8U
#endif
/**
* @brief Барьер компилятора для разделяемых с прерыванием переменных.
*
* Библиотека не отключает прерывания сама: очереди рассчитаны на схему
* "один писатель + один читатель", где индексы обновляются атомарно.
* Если у вас несколько писателей, оберните вызовы своей блокировкой.
*/
#ifndef PCAN_BARRIER
# if defined(__GNUC__) || defined(__clang__) || defined(__ARMCC_VERSION)
# define PCAN_BARRIER() __asm volatile("" ::: "memory")
# else
# define PCAN_BARRIER() do { } while (0)
# endif
#endif
/** Таблица CRC (512 байт flash) вместо побитового расчёта. */
#ifndef PCAN_CRC_TABLE
#define PCAN_CRC_TABLE 0
#endif
/** Количество регионов, которые может содержать одна карта GAS. */
#ifndef PCAN_GAS_MAX_REGIONS
#define PCAN_GAS_MAX_REGIONS 16U
#endif
#endif /* PCAN_CONFIG_H */