Rappelez-vous que cela est une version intérimaire du projet...
Ceci dit, ici sur linux avec Arduino IDE 1.8.19, tout compile et fonctionne bien. Le compilateur C++ de Arduino IDE est certainement différent entre Windows et Linux, ce qui pourrait expliquer les différences de comportement. Je vais m'assurer que la version finale du projet compile sur les deux systèmes d'exploitation. Je vais essayer de compiler ce code dans Windows 10 pour voir s'il y aura des différences.
missing terminating ' character: Les apostrophes sont acceptées par le compilateur Linux comme séparateurs de nibbles. Ils n'ont qu'une fonction visuelle. Si votre compilateur ne les aime pas, retirez-les tout simplement (collez les bits), exemple:
TIM2->CR1 = 0b0000000000000000
Je choisis le microcontroleur Generic STM32F103C6/fake STM32F103C8
Je ne vois pas ce choix dans Arduino IDE 1.8.19. Cela pourrait expliquer vos problèmes de compilation de HardwareTimer. J'ai mis en annexe la config que vous devez utiliser. Si vous ne voyez pas ces choix, c'est probablement que vous n'avez pas installé les bons boards STM32, donc que l'adresse que vous avez fournie dans les "Préférences" de Arduino IDE est mauvaise. Moi j'utilise:
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json . Ensuite je choisis "STM32 MCU based boards" dans le board manager. Voir l'autre image en annexe.
Si tout cela ne fonctionne pas, essayer d'ajouter ceci dans les directives du compilateur en entête du code source.
#include <HardwareTimer.h>