#ifndef GLOBAL_TIME_F28335_H /* Защищает порт F28335 от повторного включения. */ #define GLOBAL_TIME_F28335_H /* Отмечает единственный экземпляр аппаратного порта. */ #include "global_time.h" /* Экспортирует тот же снимок метки и календарный API, что переносимое ядро. */ #ifdef __cplusplus /* Сохраняет возможность подключения из приложения C++. */ extern "C" { /* Фиксирует C ABI аппаратных точек входа. */ #endif /* Завершает условное открытие C ABI. */ int gt_f28335_init(uint16_t device_type, uint16_t device_id); /* После InitECan и InitPieVectTable, до IRQ: занимает только eCAN-A MBOX7 RX и MBOX8 TX. */ int gt_f28335_init_periph(uint16_t periph); /* Преобразует PERIPH 0..31 в Type=1/2, ID=0..15 по реестру ProtoCAN. */ gt_clock *gt_f28335_clock(void); /* Даёт логгеру ядро для gt_get; указатель действителен после успешного init. */ void gt_f28335_ready(void); /* Вызывается после успешной инициализации всей платы, затем отправка происходит из service. */ void gt_f28335_tick_1ms(void); /* Подключается к существующему ISR 1 мс, если отдельный Timer2 не используется. */ void gt_f28335_rx_isr(void); /* Вызывается общим ECAN0INTA ISR до очистки общих флагов; не выполняет календарных циклов. */ void gt_f28335_service(void); /* Вызывается в main: применяет последний RX, обслуживает ACK и повторы готовности без ожиданий. */ int gt_f28335_timer2_start(uint32_t cpu_hz); /* Необязательный такт: занимает CPU Timer2/INT14, принимает частоту CPU в Гц, кратную 1000. */ void gt_f28335_timer2_stop(void); /* Останавливает только ранее запущенный портом Timer2, сохраняя остальные разрешения CPU IRQ. */ #ifdef __cplusplus /* Закрывает C ABI при использовании C++. */ } /* Завершает блок аппаратных функций с C-связыванием. */ #endif /* Завершает языковую проверку. */ #endif /* Завершает защиту заголовка порта. */