Skoro matrix_cnt_l , matrix_cnt_s są globalne to funkcja licznik może być bezargumentowa, a najlepiej skoro nie używasz jej nigdzie cały jej kod wstawić do funkcji obsługi przerwania. To co teraz się stanie to zmienne będące argumentami tej funkcji, a mające takie same nazwy jak zmienne globalne przesłonią zmienne globalne, czyli do funkcji zostaną wstawione kopie wartości zmiennych globalnych. W funkcji opeować będziesz na zmiennych lokalnych i je zmienisz, a zmienne globalne pozostaną takie jak były.
Z kolei zmienna interrupt_cnt skoro jest tylko używana w funkcji obsługi przerwania może być lokalna z modyfikatorem static. Raczej starać się należy jak najmniej używać zmiennych globalnych. W zasadzie tylko do komunikowania się pomiędzy różnymi funkcjami.
Zauważyłem jeszcze dziwny twór
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Powyższa linijka powinna wygenerować ostrzeżenie. Zwrócona zostanie tylko wartość matrix_cnt_s.