Итак, я пытаюсь выяснить, следует ли мне выделять локальный буфер внутри обработчика прерывания или он должен быть определен в main
как stati c global, а затем указывать на него указатель члена структуры.
int tx_buffer[10] = {1,2,4};
int rx_buffer[10];
Data data;
int main(void) {
data.txPtr = tx_buffer;
data.rxPtr = rx_buffer;
enable_irq();
}
void IRQ_Handler(Data *data) { // interrupt handler
transmit_data(data, data->txPr, data->rxPtr);
}
void transmit_data(Data *data, int *tx, int *rx) {
// ....
}
Для этого мне было интересно, будет ли полезно определить использование функции в стеке и посмотреть, достаточно ли у меня.
Ниже приведен снимок из Stack Analyzer на Eclipse. Я не уверен в локальной / максимальной стоимости - думал, что это относится к использованию / размеру, но размер отдельного компонента внутри обработчика IRQ не совпадает.
Stack Analyzer