В настоящее время я программирования ПИК в C с MPLAB X (+ компилятор XC8)Как реализовать стек, содержащий вызов функции для ПОС в C
В моем коде, у меня есть некоторые перерывы (inter1, inter2, ..), каждый из которых состоит из срочных и несрочных операций (срочные, срочные, .., n_urg1, n_urg2, ..).
Так что я хотел бы код со следующей структурой:
stack s; // FIFO or other
main() {
while (true) {
if (!isEmpty(s)) {
doNextFunction(s);
}
}
}
void interrupt inter1() {
urg1(); // urgent code
addStack(n_urg1);
}
void n_urg1() {
// non-urgent code
}
Как я могу реализовать такой стек? Есть ли что-то в стандартной библиотеке?
Спасибо большое! Но почему я должен отключать прерывания при вызове doNextFunction? В моем реальном коде у меня много функций «inter» и «n_urg». И цель состоит в том, что функции «n_urg» могут прерываться всеми функциями «inter». Я думаю, что мьютекс (как и ответ ниже) может исправить доступ к проблеме стека, не так ли? – DouglasAdams
А что, если некоторым функциям «n_urg» нужны аргументы? – DouglasAdams
Сначала вы берете указатель на функцию из стека и вызываете n_urg после повторного включения прерываний, я обновляю свой ответ. Весь ваш метод должен получить тот же аргумент (ы), иначе вы не сможете создать массив. –