Для достижения рабочего цикла 0–100% вам не нужно устанавливать период счетчика равным 100. Вместо этого вы можете установить его выше, а порог переключения выше. Давайте воспользуемся вашим примером, вам нужна частота 200 кГц, а ваши часы таймера 72 МГц, поэтому период счетчика должен быть 360, а пороговое значение должно быть htimx.Instance->CCRx = (int)(360 * dutyCycle / 100)
. Но если вы используете ПИД-регулятор для управления двигателем, вы должны учитывать его зону нечувствительности, и 0-100% будут соответствовать 60-360, а значение должно быть htimx.Instance->CCRx = (int)((360 - 60) * dutyCycle / 100)
В случае, если вам нужно точное значение , вы можете настроить частоту системы до 50 МГц или даже 100 МГц (да, вы можете, но я не поощряю это), или вы можете использовать другой MCU, например stm32f401ccu6, с той же стоимостью.
P / S: просто мое любопытство, какую цель вы хотите контролировать. Я имею в виду, что если это двигатель, я думаю, что 200 МГц - это довольно много. Для управления двигателем я обычно использую 20 МГц (о, мой недорогой драйвер :)), и значение CCRx будет более красивым.