но это почему-то никого не возбуждает
а жаль - должно бы
Код: Выделить всё
EXTI_CR1_PDIS = 2;меня смущают, очень сильно, магические числа в коде - это совсем не корректная запись
Магическое число, или сигнатура — целочисленная константа, используемая для однозначной идентификации ресурса или данных. Такое число само по себе не несёт никакого смысла, и может вызвать недоумение, встретившись в коде программы без соответствующего контекста или комментария, при этом попытка изменить его на другое, даже близкое по значению, может привести к абсолютно непредсказуемым последствиям. По этой причине подобные числа были иронично названы магическими.
Так писать нельзя. Это ошибка. Вы, похоже, не понимаете смысл битовых полей
почему?
EXTI->CR1 |= EXTI_CR1_PDIS; //11: Rising and falling edge
смотрим дефайн
#define EXTI_CR1_PDIS ((uint8_t)0xC0)
устанавливаются два бита: бит 7 и 6, 0xC0 = 0b11000000
Bits 7:6 PDIS[1:0]: Port D external interrupt sensitivity bits
These bits can only be written when I1 and I0 in the CCR register are both set to 1 (level 3).
They define the sensitivity of Port D external interrupts.
00: Falling edge and low level
01: Rising edge only
10: Falling edge only
11: Rising and falling edge
...а беретесь судить(с)
на всякий случай листинг SDCC:
Код: Выделить всё
49: EXTI->CR1 |= EXTI_CR1_PDIS; //11: Rising and falling edge
000036 AE 50 A0 [ 2] 172 ldw x, #0x50a0
000039 F6 [ 1] 173 ld a, (x)
00003A AA C0 [ 1] 174 or a, #0xc0
00003C F7 [ 1] 175 ld (x), a