Есть прога:
Код
#include
func1
{
....
}
func2
{
....
}
func3
{
....
}
func4
{
....
}
IRQ // обработчик прерывания
{
....
}
int main
{
while (1)
{
func1();
func2();
func3();
func4();
}
}
func1
{
....
}
func2
{
....
}
func3
{
....
}
func4
{
....
}
IRQ // обработчик прерывания
{
....
}
int main
{
while (1)
{
func1();
func2();
func3();
func4();
}
}
Предположим выполняется func3{} в этот момент срабатывает прерывание и передается обработчику IRQ
после завершения IRQ, программа по адресу возврата возвращается к func3{}....
НО!!!!!!
Как можно с помощью языка СИ сделать чтобы после возвращения из IRQ -> выполняться стала func1{} !!! ( поменять адрес возврата ) и уже после выполнения func1{} -> вернуться к func3{}; ??????????
Делал такое на ассмеблере, а тут как-то завис....
не понятно как в этом случае использовать ассемблерные вставки... а чтение программных прерываний ( SWI и SVC ) завели меня в тупик...
Заранее спасибо.
P.S. среда программирования Keil 4 . МК: stm cortex-m3