Files
templates/c/global-time/ports/tms320f28335/global_time_f28335.h
T
Andrey 2da7e7b525 feat(global-time): Добавь общие часы и порт TMS320F28335
Вынеси программные часы, коррекцию по ProtoCAN RTCSETUP и атомарную метку логгера в переносимое ядро без глобального состояния.

Подключи eCAN-A и CPU Timer2 отдельным портом F28335; зафиксируй календарные границы, переполнение, задержку RX и защиту IRQ в хостовых тестах.
2026-10-23 14:16:21 +03:00

20 lines
2.6 KiB
C

#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 /* Завершает защиту заголовка порта. */