Чтобы использовать boot0 как gpio нужно в option bytes выбрать источником boot0/1 не ножку порта а регистр nswboot и записать туда 0 или 1 соответственно или включить boot lock тогда источником всегда будет flash. В моем случае помог только второй вариант, при чём только после предварительного сброса до заводских настроек через jlinkstm32