Как импортировать файл .h при конвертации в код c? - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь сделать шаг от написания кода способом arduino, чтобы узнать больше c кодирование.

Почему я не могу включить файлы .h, если код arduino уже находится в c?

При компиляции кода я получаю

lcd.c:5:10: fatal error: avr/io.h: 
 #include <avr/io.h>
          ^~~~~~~~~~
compilation terminated.

Мой код:

#define F_CPU 16000000
#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
char msg[] = "HAPPY BIRTHDAY! ";
char temp[] = "rr";

void setup() {
    lcd.begin(16, 2);
    lcd.clear();
}

void loop() {
  lcd.print(msg);
  delay(1500);
  lcd.clear();
  temp[1] = msg[0];
  for(int b = 0; b < 9; b++){
    temp[0] = msg[b];
    msg[b] = msg[b+1];
  }
  msg[8] = temp[1];
}

int main(void)
{
    init();

    #if defined(USBCON)
        USB.attach();
    #endif

    setup();

    for (;;) {
        loop();
        if (serialEventRun) serialEventRun();
    }
    return 0;
}

Ответы [ 3 ]

0 голосов
/ 13 января 2020

похоже на заголовочный файл: "io.h" не найден в каталоге avr.

0 голосов
/ 24 января 2020

Почему я не могу включить файлы .h, если код arduino уже находится в c?

avr/io.h является частью avr-lib c, который должен быть частью каждого avr-g cc / avr-g ++ дистрибутива. В частности, пути, к которым относится такая система, встроены в avr-g cc, и там не должно быть , поэтому нет необходимости использовать -I path или -isystem path для указания на системные заголовки. , Для дальнейшего изучения вы можете использовать тот же вызов avr-gcc, но с добавленной опцией -v. По умолчанию будут напечатаны включаемые пути, такие как:

[...]
#include "..." search starts here:
#include <...> search starts here:
 <install-path>/lib/gcc/avr/8.3.1/include
 <install-path>/lib/gcc/avr/8.3.1/include-fixed
 <install-path>/lib/gcc/avr/8.3.1/../../../../avr/include
End of search list.
[...]

* * * * * * * В последнем пути .. означает «на один уровень вверх», то есть третий путь фактически равен <install-path>/avr/include. Этот последний путь (в моем примере) - это место, где будут расположены заголовки из avr-lib c, такие как avr/io.h и math.h, поэтому в рабочей установке будет файл <install-path>/avr/include/avr/io.h. 1-й путь предоставляет заголовки, поступающие от самого avr-g cc, например stdarg.h.

0 голосов
/ 13 января 2020

avr/io.h библиотека должна быть включена в

В Windows это будут Мои документы \ Arduino \ library \

В OSX новый каталог будет ~ / Documents / Arduino / library /


Вы также можете использовать заголовочные файлы с абсолютным именем, например:

# include "c: \ Temp \ xh "


См. этот пост для получения дополнительной информации по этому вопросу

...