GD32F103 (GigaDevice) — puce + cartes compatibles Blue Pill

GigaDevice Semiconductor IncMCU 8-32 bitarduino

⚡ L’essentiel en 60 secondes

La carte GD32F103, développée par GigaDevice Semiconductor Inc., une entreprise chinoise fondée en 2005 et spécialisée dans les mémoires flash et les microcontrôleurs, représente une alternative logicielle et matérielle directe au célèbre STM32F103 de STMicroelectronics. Introduite sur le marché en 2013, cette famille de puces a gagné en visibilité à partir de 2015, offrant aux développeurs une option souvent moins coûteuse tout en conservant une compatibilité quasi totale avec l'écosystème existant. Il est important de noter que cette compatibilité ne signifie pas une identité parfaite : bien que les broches physiques et le jeu d'instructions soient alignés, certaines différences subtiles dans l'architecture interne nécessitent une attention particulière lors de la migration de projets. La puce est basée sur un cœur Arm Cortex-M3, un processeur 32 bits largement utilisé pour le contrôle embarqué, capable de fonctionner jusqu'à 108 MHz. Cette fréquence supérieure aux 72 MHz habituels du STM32F103 est rendue possible par une mémoire flash interne à accès sans attente, ce qui signifie que le processeur n'a pas besoin d'attendre que la mémoire soit prête pour exécuter les instructions, améliorant ainsi les performances brutes, notamment pour les premières 256 Ko de mémoire.

En pratique, la GD32F103 se retrouve fréquemment sur des cartes de développement dites « Blue Pill compatible ». Ces petites cartes rectangulaires, populaires auprès des débutants et des makers, utilisent le même format de boîtier LQFP48 (un carré de 48 broches) que les versions originales de l'STM32F103C8T6. Cela implique que les schémas électriques et les connexions physiques sont identiques, permettant d'insérer une puce GD32 dans une carte conçue pour un STM32, ou inversement, avec des résultats fonctionnels souvent immédiats. Cependant, cette interchangeabilité physique cache des spécificités logicielles. Par exemple, la gestion de la mémoire flash diffère : là où le STM32 efface la mémoire par secteurs de 16 Ko, la GD32 utilise des pages plus petites, de 1 Ko sur les modèles à densité moyenne. Cette différence est cruciale pour les applications de journalisation de données, car un code écrit pour le STM32 pourrait effacer accidentellement trop de données ou échouer s'il n'est pas adapté à la granularité plus fine de la GD32. De plus, le démarrage du système, qui utilise un quartz externe pour stabiliser l'horloge, peut nécessiter l'augmentation d'un délai d'attente dans le code, car le temps de démarrage de l'oscillateur de la GD32 est légèrement différent de celui de son concurrent.

Les ressources internes de la puce varient selon les variantes, allant de 16 Ko à 3 Mo de mémoire flash et de 6 Ko à 96 Ko de mémoire vive SRAM. Pour les cartes Blue Pill classiques, on trouve généralement les modèles GD32F103C8T6 avec 64 Ko de flash ou GD32F103CBT6 avec 128 Ko, ce dernier offrant un avantage significatif par rapport à certaines cartes STM32 étiquetées « C8 » qui ne disposent parfois que de 64 Ko utilisables. En termes de connectivité, la puce intègre une interface USB 2.0 pleine vitesse, un bus CAN pour les réseaux automobiles ou industriels, ainsi que plusieurs interfaces série comme les SPI, I2C et UART. Il est à noter que l'USB nécessite impérativement un quartz externe (HSE) pour fonctionner correctement, une contrainte que certains designs basés sur le STM32 pouvaient contourner. La puce dispose également de périphériques analogiques, incluant des convertisseurs analogique-numérique (ADC) 12 bits capables de lire des signaux jusqu'à 1 MSPS, et des compteurs-timers variés pour la gestion du temps et des signaux PWM.

L'écosystème logiciel pour la GD32F103 est vaste mais fragmenté. Le moyen le plus simple de débuter est souvent via l'environnement Arduino. Bien que le cœur officiel de STMicroelectronics ne supporte pas nativement la GD32, des communautés actives ont développé des cœurs compatibles, tels que celui de Roger Clark ou le cœur communautaire GD32. Ces portages permettent d'utiliser les fonctions standard d'Arduino (comme digitalWrite ou Serial.println) sur la GD32, masquant la complexité de la configuration des registres matériels. Pour les utilisateurs avancés ou ceux nécessitant un contrôle précis, la bibliothèque officielle de GigaDevice, appelée SPL (Standard Peripheral Library), offre un accès direct aux fonctionnalités du microcontrôleur. Des outils comme PlatformIO facilitent également le développement grâce à des plateformes communautaires dédiées. En revanche, des bibliothèques plus bas niveau comme libopencm3 ne supportent pas encore officiellement la famille GD32F103 dans leur version principale, obligeant les développeurs à utiliser des branches spécifiques ou à compiler avec les en-têtes STM32F1, ce qui fonctionne généralement grâce à la compatibilité des registres mais peut poser problème pour certaines fonctionnalités spécifiques.

Il existe quelques pièges connus à surveiller. Outre la gestion de la mémoire flash mentionnée précédemment, l'adresse mémoire du bootloader système diffère de celle du STM32, ce qui peut casser le code si celui-ci tente de sauter vers le bootloader pour une mise à jour. De plus, bien que la puce soit capable de fonctionner à 108 MHz, elle démarre par défaut à une fréquence plus basse (8 MHz) via un oscillateur interne. Atteindre la vitesse maximale nécessite une configuration précise de la boucle à verrouillage de phase (PLL), et certains quartz bon marché sur les cartes clones peuvent être instables à cette fréquence. Enfin, il est parfois difficile de distinguer une vraie GD32 d'une puce contrefaite ou d'un STM32, car certains fabricants peu scrupuleux ont vendu des puces GD32 sous l'étiquette STM32, ou inversement. La lecture d'un identifiant unique de 96 bits ou du code d'identification du débogueur permet de vérifier la véritable nature de la puce. Malgré ces défis, la GD32F103 reste une solution robuste et économique pour les projets embarqués, offrant un excellent rapport performance-prix pour ceux qui acceptent de naviguer dans les nuances de sa compatibilité avec le standard STM32.

Forum (1 sujet) →

AttrSpecsvérifié
mcu_cpuArm Cortex-M3, 32-bit, up to 108 MHz with zero-wait-state flash accesses (vs 72 MHz on the ST STM32F103 — see Features). Zero-wait applies to the first 256 KB of flash only (GD32F10x User Manual EN V2.3 §2.1, mirror).✔
gpunone (MCU).? non vérifié
ram6/10/20 KB SRAM on 16–128 KB parts (T/C/R/V 4/6/8/B); 48–96 KB on 256 KB–3 MB parts. Family max: 96 KB.? non vérifié
storage16 KB to 3072 KB on-chip flash (family max 3 MB; Blue Pill parts 64/128 KB). Erase granularity is page-based: 1 KB pages on medium-density (MD) parts, 2 KB/4 KB pages on HD/XD/CL dual-bank parts ([GD32F10x User Manual §2.3.1]; the official SPL example uses #define FMC_PAGE_SIZE 0x400 = 1024 B (SPL V2.2.2 FMC example, mirror). Endurance 100 k cycles, data retention 20 y @125 °C, page erase 60–450 ms.✔
connectivity_radiosnone integrated (no WiFi/BT/Ethernet on GD32F103; Ethernet MAC exists only on the GD32F107 sibling gd32mcu.com Cortex-M3 page). Wired: 1× USB 2.0 FS device (48 MHz clock derived from main PLL, HSE crystal required — datasheet §3.17), 1× CAN 2.0B, up to 3× SPI, 2× I2C, 3× USART + 2× UART, 2× I2S (8–192 kHz), SDIO.✔
gpio_analog26 GPIO (LQFP48) up to 112 (LQFP144), 5 V-tolerant I/O; up to 3× 12-bit SAR ADC @ 1 MSPS (ADC2 absent on C4/6/8/B), 16–21 channels, internal temperature sensor (ADC_IN16); 2× 12-bit DAC on C/D/E and larger parts; DMA0 7-ch + DMA1 5-ch; up to 10 general 16-bit timers + 2 advanced + 2 basic; RTC; EXMC external memory controller on LQFP100/144 parts.? non vérifié
clockingfactory-trimmed internal IRC8M (±1 % @25 °C), HXTAL 4–16 MHz, PLL ×2–32, IRC40K + LXTAL 32.768 kHz for RTC/FWDGT. APB1 max 54 MHz, APB2 max 108 MHz, ADC clock ≤14 MHz.? non vérifié
power2.6–3.6 V supply and I/O; VBAT 1.8–3.6 V. Run @108 MHz: typ 45.5 mA (all peripherals on) / 34 mA (off) on small parts; 66.3/41.2 mA on large parts; @72 MHz 30.7/45.0 mA. Standby ≈5.6–5.8 µA (RTC on); sleep wake-up 4.5 µs.? non vérifié
temperature−40 to +85 °C operating ("Industrial" grade ordering codes), storage −55 to +150 °C, TJ max 125 °C.? non vérifié
bootBOOT0 pins select main flash / system memory bootloader / SRAM; the system bootloader sits at 0x1FFF B000–0x1FFF F7FF and option bytes at 0x1FFF F800 (datasheet memory map) — note this differs from the STM32F103 system-memory layout. A 96-bit unique device ID and memory-density signature exist (User Manual §1.5.2 "Unique device ID (96 bits)"); > ? non vérifié
  • Fabricant : GigaDevice Semiconductor Inc. (Pékin, fondée en 2005 ; SSE:603986), un fabricant chinois fabless de NOR flash et de MCU GD32 (Wikipedia — GigaDevice, consulté le 2026-10-13).
  • Année : la série GD32 Cortex-M3 a été introduite en 2013, quand GigaDevice est entrée sur le marché des MCU (Wikipedia — GigaDevice) ; la note applicative de migration GD32F103 AN001 v1.0 de GigaDevice elle-même est datée du 14 janvier 2013 (GD32F103xx AN001 Software Migration Guide). La couverture médiatique occidentale a commencé en décembre 2015 (CNX Software).
  • Statut : actif. La gamme GD32F1/F2 (Cortex-M3) est toujours listée sur le site officiel parmi « more than 300 MCU models » (plus de 300 modèles de MCU) (page produit gd32mcu.com, consulté le 2026-10-13).
  • Prix de lancement : >
  • Variantes (codes de commande, datasheet officielle Rev 2.9) : puces flash 16/32/64/128 Ko GD32F103T4…TB (QFN36), C4…CB (LQFP48), R4…RB (LQFP64), V8/VB (LQFP100), plus les puces 256 Ko–3072 Ko RC…RK, VC…VK, ZC…ZK (LQFP64/100/144) avec 48–96 Ko de SRAM. Les puces pertinentes pour le Blue Pill sont GD32F103C8T6 (64 Ko, LQFP48) et GD32F103CBT6 (128 Ko, LQFP48) — l'option 128 Ko « CB » compte parce que les cartes STM32F103 vendues comme « C8 » n'exposent souvent que 64 Ko (tout depuis GD32F103xx Datasheet Rev 2.9, mirrored here, consulté le 2026-10-13).

+ Points forts

  • 108 MHz vs 72 MHz, flash zéro attente : la différence phare vs STM32F103 — 1,5× l'horloge avec des accès flash à la vitesse du CPU (datasheet ; CNX 2019 : "compatible with STMicro STM32F103, but with a higher 108 MHz clock, and zéro wait state internal flash… drop-in replacement… pin-to-pin compatible", consulté le 2026-10-13). Même à 72 MHz égal, Dhrystone mesuré 64,41 vs 48,81 VAX MIPS (GD32 vs STM32) grâce à la flash zéro attente — Roger Clark, cité par CNX 2015.
  • Broche-à-broche + firmware compatible avec STM32F103 : Olimex a monté sur support une GD32F103RBT6 sur sa propre carte STM32F103 et elle "passed all functional tests without any modifications", mêmes outils et même code (CNX 2015, Olimex test log).
  • Flash bien au-delà du STM32F103 : jusqu'à 3 Mo de flash / 96 Ko de SRAM (STM32F103 plafonne à 512 Ko/64 Ko), effacement par page 2 Ko/4 Ko + double banque sur les grosses puces, pages de 1 Ko sur les puces MD (User Manual §2.3.1) — gestion d'usure plus fine que les secteurs de 16 Ko du STM32F103.
  • 128 Ko dans le format Blue Pill : le GD32F103CBT6 donne 128 Ko de flash dans le boîtier LQFP48 où beaucoup de Blue Pills « C8 » n'embarquent que 64 Ko utilisables.
  • Prix : puces historiquement $0,70–$2,80 (2015, Taobao) — une raison majeure pour laquelle les Blue Pills gris du marché sont passés à elle ([CNX 2015]).
  • Puce sœur RISC-V : le GD32VF103 (même classe de brochage, cœur RISC-V « Bumblebee » @108 MHz) a permis des cartes comme la Sipeed Longan Nano — pertinent si vous voulez le format sans la licence Arm (CNX 2019).

− Points faibles

  • Le code STM32 demande deux ajustements documentés : la note de migration AN001 de GigaDevice dit que HSE_STARTUP_TIMEOUT doit être relevé de 0x0500 à 0xFFFF (le temps de démarrage HSE GD32 diffère) et que l'algorithme de programmation flash doit être remplacé dans les projets Keil/IAR (GD32F103xx AN001 §2–3, mirror). Symptôme si ignoré : gels/échecs en attente du HSE, ou échec du flash avec les algorithmes STM32.
  • Modèle d'effacement flash différent : effacement par page (1 Ko MD / 2 Ko HD-XD) vs effacement par secteur de 16 Ko du STM32F103 (User Manual §2.3.1). Un code STM32 qui efface « un secteur » pour réécrire un enregistrement effacera bien moins (ou plus) qu'attendu sur GD32 — corruption de journaux de données et ports ratés sont des pièges classiques.
  • Zéro attente seulement pour les premiers 256 Ko : "A long delay when CPU fetches the instructions out of the range" (User Manual §2.1) — l'argument « 108 MHz zéro attente » se dégrade sur les puces 512 Ko–3 Mo au-delà de 256 Ko.
  • Bizarrerie d'horloge USB : l'horloge 48 MHz USBD "is generated from the internal main PLL (the clock source must use a HSE crystal oscillator)" (datasheet §3.17) — l'USB ne démarre pas depuis une horlogerie HSI-only comme certains designs STM32 le tolèrent.
  • Bootloader système relocalisé : la région bootloader GD32 est 0x1FFF B000–0x1FFF F7FF (memory map du datasheet), pas le 0x1FFF0000 du STM32F103 — le code de saut au bootloader et les hypothèses de linker cassent silencieusement.
  • Réserves sur l'unique ID : l'unique ID 96 bits existe (User Manual §1.5.2) mais le datasheet marque « Reserved » la fenêtre de signature style STM32 ; >
  • Anecdotes qualité/approvisionnement : un ingénieur a rapporté "out of 6 [GD32F103RCT6] chips, I only managed to flash one. And that one will not boot" lors d'une bascule STM32→GD32 (CNX 2022, article APM32 — témoignage de première main traduit). Anecdotique, source unique.
  • Vous en possédez peut-être déjà sans le savoir : la plupart des cheap "STM32F103C8T6" Blue Pills vendus après ~2017 contiennent des GD32 ou d'autres clones (Wikipedia — STM32 ; Greaseweazle STM32 Fakes). Détection : lire le code ID DBG (0xE0042000, DBG_ID_ID_CODE dans SPL gd32f10x_dbg.h) — GD32 et STM32 renvoient des valeurs différentes.
  • Manques d'écosystème : les outils/cores ST officiels (STM32CubeMX, core stm32duino) ne ciblent pas GD32 (voir Systems) ; libopencm3 n'a pas GD32F103 dans le master (PR #1639 en attente) ; MicroPython amont n'a pas de port GD32F103 (fork communautaire : CommunityGD32Cores/micropython).
  • Pas de 108 MHz par défaut : à la sortie de reset, la puce tourne sur IRC8M comme le STM32 sur HSI ; atteindre 108 MHz demande une configuration PLL/HXTAL correcte — et les cristaux/boards de certains clones Blue Pill sont marginaux à l'horloge supérieure.
  • Retour d'expérience expert expert — expert-microcontroleur
    • Bonjour à tous. Après plusieurs mois d'utilisation intensive de la GD32F103, je confirme que l'attrait principal reste le rapport performance/prix. Les 108 MHz avec accès flash à vitesse CPU sont réels par rapport aux 72 MHz du STM32F103, ce qui donne un gain mesurable en Dhrystone. Cependant, atte… — expert-microcontroleur
    • Salut, merci pour ce retour détaillé. Je suis justement en train de tester une Blue Pill 'clone' qui utilise apparemment cette puce. J'ai compilé un projet STM32 existant sans rien changer, sauf que j'ai remplacé le .hex. Au début ça semblait marcher, mais j'ai des coupures aléatoires en communicat… — maker-debutant-99
    • Exactement pour le HSE, si le timeout n'est pas augmenté à 0xFFFF comme indiqué dans la note AN001, le MCu peut échouer à initialiser l'horloge externe si elle est un peu lente, d'où les instabilités. Pour le flash, oui, ne suppose pas que l'effacement d'une zone efface 16 Ko. Sur la GD32F103, c'es… — codeur-embed

Retours et projets de la communauté

  • Olimex GD32F103RBT6 drop-in test

    Olimex GD32F103RBT6 drop-in test — clone MCU socketed into an STM32-P103 board, (unverified au 2026-10-13) — interne hébergé sur site interne, statut vivant vérifié le 2026-10-13. Projet documenté dans la fiche gd32f103 (MCU 8-32 bit) ; rôle : approfondir la …

Contenu indisponible pour le moment.

  • Le code STM32 demande deux ajustements documentés : la note de migration AN001 de GigaDevice dit que HSE_STARTUP_TIMEOUT doit être relevé de 0x0500 à 0xFFFF (le temps de démarrage HSE GD32 diffère) et que l'algorithme de programmation flash doit être remplacé dans les projets Keil/IAR (GD32F103xx AN001 §2–3, mirror). Symptôme si ignoré : gels/échecs en attente du HSE, ou échec du flash avec les algorithmes STM32.
  • Modèle d'effacement flash différent : effacement par page (1 Ko MD / 2 Ko HD-XD) vs effacement par secteur de 16 Ko du STM32F103 (User Manual §2.3.1). Un code STM32 qui efface « un secteur » pour réécrire un enregistrement effacera bien moins (ou plus) qu'attendu sur GD32 — corruption de journaux de données et ports ratés sont des pièges classiques.
  • Zéro attente seulement pour les premiers 256 Ko : "A long delay when CPU fetches the instructions out of the range" (User Manual §2.1) — l'argument « 108 MHz zéro attente » se dégrade sur les puces 512 Ko–3 Mo au-delà de 256 Ko.
  • Bizarrerie d'horloge USB : l'horloge 48 MHz USBD "is generated from the internal main PLL (the clock source must use a HSE crystal oscillator)" (datasheet §3.17) — l'USB ne démarre pas depuis une horlogerie HSI-only comme certains designs STM32 le tolèrent.
  • Bootloader système relocalisé : la région bootloader GD32 est 0x1FFF B000–0x1FFF F7FF (memory map du datasheet), pas le 0x1FFF0000 du STM32F103 — le code de saut au bootloader et les hypothèses de linker cassent silencieusement.
  • Réserves sur l'unique ID : l'unique ID 96 bits existe (User Manual §1.5.2) mais le datasheet marque « Reserved » la fenêtre de signature style STM32 ; >
  • Anecdotes qualité/approvisionnement : un ingénieur a rapporté "out of 6 [GD32F103RCT6] chips, I only managed to flash one. And that one will not boot" lors d'une bascule STM32→GD32 (CNX 2022, article APM32 — témoignage de première main traduit). Anecdotique, source unique.
  • Vous en possédez peut-être déjà sans le savoir : la plupart des cheap "STM32F103C8T6" Blue Pills vendus après ~2017 contiennent des GD32 ou d'autres clones (Wikipedia — STM32 ; Greaseweazle STM32 Fakes). Détection : lire le code ID DBG (0xE0042000, DBG_ID_ID_CODE dans SPL gd32f10x_dbg.h) — GD32 et STM32 renvoient des valeurs différentes.
  • Manques d'écosystème : les outils/cores ST officiels (STM32CubeMX, core stm32duino) ne ciblent pas GD32 (voir Systems) ; libopencm3 n'a pas GD32F103 dans le master (PR #1639 en attente) ; MicroPython amont n'a pas de port GD32F103 (fork communautaire : CommunityGD32Cores/micropython).
  • Pas de 108 MHz par défaut : à la sortie de reset, la puce tourne sur IRC8M comme le STM32 sur HSI ; atteindre 108 MHz demande une configuration PLL/HXTAL correcte — et les cristaux/boards de certains clones Blue Pill sont marginaux à l'horloge supérieure.
  • Faire clignoter la LED PC13 debutant Schéma : IMG-gd32f103-debutant-1-clignotement-led.svg — carte GD32F103C8 compatible Blue Pill, LED embarquée PC13 clignotant à 1 Hz
  • Bouton poussoir avec anti-rebond debutant Schéma : IMG-gd32f103-debutant-2-bouton-antirebond.svg — bouton poussoir sur PA0 avec résistance de pull-down, commande de la LED PC13 par toggling anti-rebondi
  • Console série sur USART0 (PA9/PA10) debutant Schéma : IMG-gd32f103-debutant-3-console-serie-usart0.svg — convertisseur USB-série 3,3 V relié croisé à USART0 : PA9 en TX vers RX de l'adaptateur et PA10 en RX vers TX, masse commune
  • Graduer une LED avec le PWM d'un timer intermediaire Schéma : IMG-gd32f103-intermediaire-1-pwm-led.svg — LED externe avec résistance 330 ohms sur PA6 pilotée en PWM par un timer du GD32F103C8, signal dent de scie annoté
  • Lire un potentiomètre avec l'ADC 12 bits intermediaire Schéma : IMG-gd32f103-intermediaire-2-adc-potentiometre.svg — potentiomètre entre 3,3 V et masse, curseur relié à PA1, conversion ADC 12 bits du GD32F103C8 affichée sur la console série
  • Afficheur OLED I2C SSD1306 intermediaire Schéma : IMG-gd32f103-intermediaire-3-i2c-oled-ssd1306.svg — module OLED SSD1306 0,91 pouce en I2C sur le bus du GD32F103C8 : SCL, SDA avec résistances de pull-up, VCC 3,3 V, adresse 0x3C
  • Interruption EXTI + anti-rebond par timer avance Schéma : IMG-gd32f103-avance-1-exti-timer-debounce.svg — chronogramme EXTI sur PA0, timer 1 kHz, machine à états anti-rebond sans temporisation bloquante, LED PC13 commandée en SPL
  • Acquisition ADC en DMA circulaire avance Schéma : IMG-gd32f103-avance-2-dma-adc.svg — flux ADC0 vers DMA0 canal 0 vers un tampon en SRAM en mode circulaire, sans intervention CPU, sur GD32F103C8
  • Sommeil profond Stop et réveil par RTC avance Schéma : IMG-gd32f103-avance-3-stop-rtc-reveil.svg — GD32F103C8 en mode Stop, horloges coupées, RTC sur IRC40K réveillant le CPU toutes les 2 secondes, LED PC13 pulsée à chaque réveil

Bibliothèque de code — exemples écrits pour cette carte

  • clignotante.ino Arduino

    La LED bleue des cartes GD32/Blue Pill est sur PC13 et active à LOW — le premier « pourquoi elle clignote à l'envers » de la carte. millis() garde la boucle libre, le core STM32F1 accepte le GD32 tel…

  • bouton-led.ino Arduino

    Le montage bouton le plus courant, adapté aux broches Arduino du core STM32 : INPUT_PULLUP fonctionne sur PA0 et le filtre de 30 ms nettoie les rebonds. La LED suit l'appui en direct sur le moniteur.

  • respiration.ino Arduino

    Le core STM32F1 route analogWrite vers les timers matériels : PA1 est le canal 2 de TIM2, et la fréquence se règle par broche. La LED respire avec un PWM 20 kHz que même les condensateurs n'entendent…

  • potentiometre.ino Arduino

    L'ADC du GD32 est 12 bits natif : le potentiomètre se lit en 4096 niveaux, et le format « brut ; volts » alimente directement le traceur série de l'IDE. La moyenne sur 8 échantillons nettoie le bruit.

  • pont-uart.ino Arduino

    Le GD32 a trois UART : le core les expose en Serial/Serial2/Serial3. Ce pont bidirectionnel sert à configurer un module (AT commands) ou à déboguer un GPS sans le souder ailleurs.

  • oled-i2c.ino Arduino

    Les bibliothèques Adafruit se compilent telles quelles sur le core STM32F1 : le SSD1306 se branche sur PB6/PB7 (Wire1 mappé en Wire par défaut) et la jauge animée prouve que le bus tourne.

  • dht22.ino Arduino

    Le protocole 1 fil du DHT est minuté en microsecondes : la bibliothèque Adafruit fonctionne sur le core STM32F1 mais la calibration des délais dépend de la vitesse CPU. Les échecs systématiques signa…

  • servo.ino Arduino

    La bibliothèque Servo du core STM32F1 place chaque objet sur un timer matériel libre : le servo reçoit son 50 Hz exact sans que le code s'en occupe. Le vrai sujet reste l'alimentation séparée du serv…

  • mesure-frequence.ino Arduino

    Les GPIO du GD32 ont la matrice d'interruption : chaque front d'appel la routine, et compter sur une fenêtre de 1 s donne la fréquence. Le patron ISR-courte + copie verrouillée est celui de tous les …

  • sommeil.ino Arduino

    En Stop, le GD32 tombe à ~100 µA tout en gardant la SRAM : le programme reprend où il s'est arrêté, contrairement au deep sleep. Le réveil se fait sur n'importe quelle interruption externe configurée.

Exemples et dépôts trouvés en ligne