ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
3 декабря
1419422 Топик полностью
Chum_A (26.03.2024 17:09, просмотров: 144) ответил Make_Pic на Я раньше это смотрел. Куча всего - большой объем для поиска, вы можете подсказать куда конкретно смотреть по теме моего вопроса?
Собственно можно подсмотреть реализацию взаимодействия HAL с прикладным уровнем через ABI. Мы реализовывали на этом принципе такую схему: 

- по подаче питания стартует HAL и он обеспечивает в т.ч. функции перечисленные в структуре hal_rte_abi_t (см. ниже);

- HAL запускает UI позволяющий в т.ч. записать, выбрать из ранее записанных и запустить (в ОЗУ) требуемый прикладной (USER) код;

- запущенный USER получает полный контроль над железом и возможность вызова функций HAL.

Тонкости сборки не помню, делал специально обученный человек.

typedef struct
{
    // Вывод на экран
    LCD_BUF_STATE (*DrawPayload)(uint8_t *, uint16_t );
	  // Обработка кнопок
		u16 (*GetPressed)(void);
    u16 (*GetReleased)(void);
		u8 (*GetKeyState)(u8 );
		u16 (*GetKeysState)(void);
		// получение токов и напряжений
		PWR (*GetUI)(void);
		// управление ЦАП
		u16 (*Set_mV_DAC)( UPOR , u16 );
		// управление системными событиями
...........................................................................
		// пользовательские таймеры
...........................................................................
		// обработка дискретных входов
........................................................................
}
hal_rte_abi_t;
................................................
#define PLC_RTE ((hal_rte_abi_t *)(PLC_RTE_ADDR))
......................... powers = PLC_RTE->GetUI();

Описал кривовато, на "прямо" времени надо много, да и вспоминать тоже, делали лет 5 как.