Если бы Вы не страдали х..ей - кактус + SPL, а изучали камень , все вопросы отпали бы сами собой .
Кто тут поет что SPL так прекрасна и хороша для нубов ?
Вот яркий пример .
Изучай Вы Си а не суррогаты , да умей работать с документацией , давно бы поняли,
что конфигурировать пины можно в любой комбинации.
Разбейте пины по функционалу и инитьте по очереди .
Код: Выделить всё
GPIO_Init()Сие есть еще одна крайность.
Код: Выделить всё
GPIOD->MODER = 0x55100000;
GPIOD->OTYPER = 0x00000800;
GPIOD->OSPEEDR = 0xb4000000;
GPIOD->PUPDR = 04000000;Изучите хэдеры , там есть определения битов этих регистров .
Например для PD15, PD14, PD13, PD12, PD10
Код: Выделить всё
RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
GPIOD->MODER &= ~(
GPIO_MODER_MODER10 |
GPIO_MODER_MODER12 |
GPIO_MODER_MODER13 |
GPIO_MODER_MODER14 |
GPIO_MODER_MODER15
);
GPIOD->MODER |=
GPIO_MODER_MODER10_0 |
GPIO_MODER_MODER12_0 |
GPIO_MODER_MODER13_0 |
GPIO_MODER_MODER14_0 |
GPIO_MODER_MODER15_0
;
GPIOD->OSPEEDR &= ~(
GPIO_OSPEEDER_OSPEEDR10 |
GPIO_OSPEEDER_OSPEEDR12 |
GPIO_OSPEEDER_OSPEEDR13 |
GPIO_OSPEEDER_OSPEEDR14 |
GPIO_OSPEEDER_OSPEEDR15
);
GPIOD->OSPEEDR |=
GPIO_OSPEEDER_OSPEEDR13_0 |
GPIO_OSPEEDER_OSPEEDR14 |
GPIO_OSPEEDER_OSPEEDR15_1
;
GPIOD->OTYPER &= ~(
GPIO_OTYPER_IDR_10 |
GPIO_OTYPER_IDR_12 |
GPIO_OTYPER_IDR_13 |
GPIO_OTYPER_IDR_14 |
GPIO_OTYPER_IDR_15
);Для PD11 - не понятно что есть
а PD11 как вход. а пин PD11 как Open-Drain.
Вероятно имелось ввиду вход с pullup ?