Ich habe einen Code, den ich in mehreren Projekten verwenden möchte, also möchte ich ihn in eine Bibliothek einfügen
Die Bibliothek verwendet keine speziellen Funktionen des Chips, und welche zwei Pins sie auch verwendet, um ihre Arbeit zu erledigen, müssen nur allgemeine E / A sein
Da ich beabsichtige, dies für mehrere Projekte zu verwenden, müssen diese Projekte angeben, welche Pins diese beiden Pins auf Projektbasis sind
Meine Frage ist, wie ich meine Bibliothek und meinen Code in jedem Projekt einrichten kann, damit ich definieren kann, welche Pins ich in jedem Projekt verwenden möchte - unabhängig von der Bibliothek.
Verwenden des XC8-Compilers für PIC10s und 16s
Jede Anleitung geschätzt
Ich weiß nicht, ob sich das in letzter Zeit geändert hat, aber vor ein oder zwei Jahren kontaktierte ich den technischen Support von Microchip, der bestätigte, dass XC8 Bibliotheken als solche nicht unterstützt.
Was Sie tun können, ist, die C-Datei in einem "freigegebenen" Ordner zu haben und sie in die verschiedenen Projekte aufzunehmen.
Die Stifte können sein:
Definieren Sie eine Strict-Klasse, die Bits unterstützt. Setzen Sie das strikt auf Ihre Variablen und Sie haben adressierbare Bits.
Oder verwenden Sie die in Ihrer Header-Datei definierten Erzen.
Bearbeiten: Um das, was ich zuvor gesagt habe, ein wenig zu erweitern, hier ist ein Beispiel dafür, wie dies an einem 8-poligen Anschluss erfolgen könnte.
//define a bit-addresable byte
typedef struct {
uint8_t B0:1; //bit definitions
uint8_t B1:1; //bit definitions
uint8_t B2:1; //bit definitions
uint8_t B3:1; //bit definitions
uint8_t B4:1; //bit definitions
uint8_t B5:1; //bit definitions
uint8_t B6:1; //bit definitions
uint8_t B7:1; //bit definitions
} B8_TypeDef;
//global variables
#define LED0 (((B8_TypeDef *)&PORTB)->B0) //led0 on PORTB.0
//in your main loop
while (1) {
//flip LED0/PORTB.0
LED0 = 1; //set LED0/PORTB.0
LED0 = 0; //clear LED0 / PORTB.0
Wenn Sie die vorgefertigte Header-Datei durchgehen, werden Sie einen identischen Ansatz finden, außer dass jede Typedef einen anderen Namen hat.
So geht das in der Simulation:
Das gleiche Konzept kann auf Variablen oder 16/32-Bit-Typen angewendet werden, sofern der Compiler Bittypen unterstützt.