Je n'ai jamais utilisé PlatformIO
Ma réponse n'est basée que sur mes connaissances (étendues) du développement des AVR et de la structure Arduino.
Le cadre Arduino est utilisant AVR-libc (le cadre standard de bas niveau qui vous donne tous les outils dont vous avez besoin pour programmer sur AVR), et ajoute une couche d'abstraction de sorte que vous ne manipulez pas directement les registres, mais utilisez une interface plus facilement compréhensible.
Ainsi, lorsque vous écrivez sur une broche, au lieu de regarder le numéro de la patte du circuit intégré de l'AVR, vous cherchez la patte correspondante. PORT
pour le configurer et le muter, vous utilisez digitalWrite()
sur le conseil d'administration Le numéro de la broche. Ainsi, quel que soit le circuit intégré, la broche restera la même avec des capacités cohérentes.
La définition des broches est faite en utilisant un fichier d'en-tête qui est donné au compilateur en fonction de votre cible dans votre IDE (donc si vous utilisez un Arduino Mega ou un Leonardo la correspondance entre le port/pin de l'AVR et le pinout de la carte changera radicalement).
Étant donné votre description de PlatformIO
Il utilise ces informations pour vous donner le brochage approprié en fonction de la configuration de la carte. Il tire également parti de l'approche orientée objet de l'infrastructure Arduino, de sorte que vous pouvez facilement compléter les méthodes lorsque vous utilisez des singletons (comme lorsque vous utilisez Serial
).
En utilisant la libc AVR brute, d'un autre côté, il est plus difficile d'obtenir une complétion significative, parce que la plupart des opérations sont faites sur des registres qui sont déclarés par des alias de préprocesseurs, et tout le code est en C pur, donc la complétion de code n'est pas vraiment utile (vous ne pouvez pas lister toutes les méthodes qui s'appliquent à un objet donné comme avec l'exemple de Serial).
Ensuite, Arduino offre une approche de haut niveau pour prototyper du code embarqué, que vous pouvez ensuite retravailler lorsque vous avez besoin d'optimiser le temps et/ou l'espace. Et certains projets (comme le firmware Marlin pour les repraps) utilisent une sorte d'approche hybride, en réimplémentant de nombreuses parties de l'interface Arduino d'une manière plus optimisée (comme digitalWrite
ou le Serial
objet).
En fin de compte, je vous conseille d'abandonner platform.io
ou le arduino
et passez à eclipse si vous aimez vraiment les interfaces graphiques des IDE, ou mieux, utilisez votre éditeur puissant préféré (comme vim/nvim, emacs, atom, sublime ) pour qu'il traite le code AVR comme n'importe quel autre code C.