§ Главный файл
#include <avr/io.h> #include <util/delay.h> #define BLINK_DELAY_MS 1000 int main (void) { /* Установка пина 5 на PORTB как OUTPUT */ DDRB |= _BV(DDB5); while(1) { // Включить пин 5 на высокий уровень (HIGH) PORTB |= _BV(PORTB5); // Задержка в миллисекундах _delay_ms(BLINK_DELAY_MS); // Выключить (LOW) пин 5, индикатор выключается PORTB &= ~_BV(PORTB5); _delay_ms(BLINK_DELAY_MS); } }
§ makefile
all: main.o avr-gcc -mmcu=atmega328p main.o -o main avr-objcopy -O ihex -R .eeprom main main.hex avr-objdump -d main > main.lst flash: avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:led.hex main.o: main.c avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c main.c -o main.o
§ Принципы компиляции
# Компиляция avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o main.o main.c # Сборка avr-gcc -mmcu=atmega328p main.o -o main # Создание HEX-файла avr-objcopy -O ihex -R .eeprom main main.hex # Загрузка на плату avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:main.hex # Листинг кодов avr-objdump -d main > main.lst
21 ноя, 2020
© 2007-2023 Смягчил лиственный мох