Straszny bałagan
Przerwania to rejestr IMR (Interrupt Mask Register), rejestr EMR (Event Mask Register) dotyczy zdarzeń - jeśli nie wykorzystujesz zdarzeń np. do wybudzania procka (a nic o tym nie piszesz) to zostaw EMR w spokoju.
Rejestr SWIER (Software Interrupt/Event Register) umożliwia programowe wymuszenie przerwania/zdarzenia - więc chyba też nie o to Ci chodzi
Zresztą stąd jest Twoje wywołanie jeden raz po konfiguracji" - wymuszasz je programowo.
Przyłączam się do pytania przedmówcy - czy włączyłeś przerwanie w NVIC'u. Priorytetu nie musisz ruszać - może zostać tak jak jest.
Pytanie2: włączasz zegar dla portu i AFIO? Brakuje konfiguracji rejestru AFIO->EXTIx.
Działający przykład (PD3):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.