У STM32 есть возможность защитить конфигурацию порта от изменения, для этого используйте регистр GPIOx_LCKR. Блокируются регистры: GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH. Используйте конструкцию вида
Код
uint32_t res = HAL_GPIO_LockPin(GPIOA, GPIO_PIN_13);
Функция должна вернуть HAL_OK.
Очевидно, что значение настроенного на вывод пина всё ещё можно менять. То есть блокируется конфигурация порта, а не значение. Так, после блокировки бесполезно будет менять скорость, подтяжки, перенастроить на вход/выход/альтернативную функция (spi, i2c, ...).
Источник: https://my.st.com/content/ccc/resource/technical/document/reference_manual/5d/b1/ef/b2/a1/66/40/80/DM00096844.pdf/files/ |