/** * @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 */