Измените функцию, чтобы она принимала указатель на структуру в качестве параметра, а не возвращала ее в качестве значения. Он по-прежнему должен передавать что-то, но это, вероятно, всего 4 байта, а не 12.
void GetTimerEntry(uint8_t e_idx, timer_entry_t *entry) // uint8_t e_idx: 1 byte Local
{
uint16_t mb_reg_idx; // 2 bytes Local
uint16_t mb_reg; // 2 bytes Local
// (...) fill timer_entry_t struct content
return;
}
Тогда вместо
timer_entry_t entry = GetTimerEntry(idx);
вы используете
timer_entry_t entry;
GetTimerEntry(idx, &entry);