В прошлый раз я писал как создавал драйвер для лампочки. Эта часть будет посвящена тому как я использовал свой драйвер в отдельном проекте.
Написание основного проекта
Свой проект я разместил в папке ~/hard_project, основной и единственный файл которого имеет следующее содержание:
// файл ~/hard_project/libdrv/main.c #define F_CPU 16000000UL /* тактовая частота МК */ #include "leddrv/leddrv.h" int main(void) { led_init(); // инициализация лампочки for (;;) // бесконечный цикл led_blink_ms(500); // мигнуть с частотой 0,5сек }
Этот код настолько прост и понятен что в дополнительных комментариях и не нуждается.
Упрощённую версию Makefile для сборки проекта можно скачать тут. Скомандовав в консоли, я и получил целевой hex файл:
$ make avr-gcc -g -Wall -O2 -mmcu=atmega168 -o .main.o -c main.c avr-gcc -g -Wall -O2 -mmcu=atmega168 -o .main.elf .main.o -static -Lleddrv/ -lleddrv avr-objcopy -j .text -j .data -O ihex .main.elf main.hex
А затем и прошил свой МК:
$ make program avrdude -v -c dapa -p atmega168 -P /dev/parport0 -b 115200 -U flash:w:main.hex
И вот оно, о чудо - работает!
Итог
Всё круто! Цель достигнута. В моих планах написать аналогичные библиотеки для ЖК-модуля и датчика температуры. Надеюсь это произойдёт в недалёкой перспективе:)
---
Скачать hard_project.tar.gz
Комментариев нет:
Отправить комментарий