Bei Verwendung von Atmel Studio ist das Atmel Software Framework verfügbar , das eine gewisse Hardware-Abstraktion wie die Arduino-Bibliotheken bietet. Es ermöglicht, dass derselbe Code (innerhalb eines angemessenen Rahmens) auf mehreren Atmel-Plattformen ausgeführt wird, einschließlich des AVR und seiner ARM-basierten Produkte. Ich habe gerade erst damit begonnen, es für ein neues Projekt zu verwenden, aber hier ist ein Beispiel für Code:
#define RADIO_RX IOPORT_CREATE_PIN(PORTA, 0)
ioport_set_pin_dir(RADIO_RX, IOPORT_DIR_INPUT);
data_in = ioport_get_pin_level(RADIO_RX);
Es scheint eine sehr gute Unterstützung für On-Chip-Peripheriegeräte wie USB, SPI, USART usw. in ihrem gesamten Sortiment zu haben. Es bietet auch Unterstützung für externe Peripheriegeräte wie eine SD-Karte mit einem FAT-Software-Stack und einige LCDs, obwohl diesbezüglich weitgehend auf die Geräte beschränkt zu sein scheint, die sie auf ihren Entwicklungsplatinen verwenden.
Während die Sprache dieselbe ist, die zur Lernkurve beitragen könnte, werden Sie wahrscheinlich weniger Beispielcode und übergeordnete Bibliotheken finden, die ASF verwenden, beispielsweise die Schnittstelle zu einem bestimmten RF-Transceiver oder GPS-Empfänger.
Oft können solche Bibliotheken, die versuchen, die Hardwareschicht zu stark auszublenden, zu unerwarteten Problemen führen, wenn Sie den zugrunde liegenden Vorgang und die Funktionsweise nicht kennen. Unter diesem Gesichtspunkt denke ich, dass ASF ein gutes Abstraktionsniveau bietet, um das Lesen und Portieren zwischen Atmel-Geräten zu vereinfachen und gleichzeitig eine gute Kontrolle über die Hardware zu ermöglichen.