La configuration de l’horloge est détaillée dans le fichier « systeme_stm32f10x.c »
Ligne 987, fonction « SetSysClockTo72(void) » :
Le AHB prescaler ( HCLK ) à la ligne 1022 : RCC_CFGR_HPRE_DIV1
Le APB1 prescaler ( PCLK1 ) à la ligne 1028 : RCC_CFGR_PPRE1_DIV2
Le APB2 prescaler ( PCLK2 ) à la ligne 1025 : RCC_CFGR_PPRE2_DIV1
Les valeurs possibles sont définies dans « stm32f10x.h » à partir de la ligne 1724.
Ton TIM2 est configuré pour générer des interruptions à une fréquence de 4Khz :
F_TIM2= 72000000 / (71+1) / 250 =4000.
Donc une fréquence step de : 4000 / 2 = 2KHz.
A cette fréquence le moteur tournera à : (2000/500)*60=240rpm
@CNCSERV te propose d’aller beaucoup plus haut en fréquence afin d’avoir un résultat satisfaisant.
Note : le délai minimum de quelques µs après changement de direction est à respecter, tu peu gérer ça dans ta routine d’interruption du TIM2 en rajoutant d’autre(s) valeur(s) de cycle par exemple « cycle=2,3,… ».