Не нашёл решения изящнее, чем взять первый свободный пин, посадить его на D- и в коде написать следующее:
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
__disable_irq();
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);
uint32_t i;
for(i = 0; i < 10000; i++);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
__enable_irq();
Вообще хотел обойтись минимальной кровью, т.е. без задействования какого-либо пина и всё не мог понять, почему не работает управление пином, если инициализирован USB. В даташите потом почитал, что
"As soon as the USB is enabled, these pins are connected to the USB internal transceiver automatically."
То есть чтобы это порешать надо было деинициализировать USB, потом заново....
В общем, если будет решение лучше - с удовольствием почитаю
@Вуйко , спасибо за участие )