Компоненты и технологии • №2 '2011 компоненты



Pdf көрінісі
бет17/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   13   14   15   16   17   18   19   20   ...   129
Kurniz

ATMega323_WinAVR/ и предназначен 
для выполнения на МК ATmega323. Файл 
makefile, находящийся в директории про-
екта, содержит все настройки и правила 
компиляции и, в том числе, определяет, 
для какого МК компилируется проект. Для 
того чтобы целевой платформой стал МК 
ATmega128, необходимо в файле makefile 
отыскать строку:


113
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 3 '2011
www.kite.ru
компоненты
микроконтроллеры
MCU = atmega323
и заменить ее на
MCU = atmega128
Для редактирования файлов можно 
применить простой, но удобный тексто-
вый редактор Programmers Notepad, кото-
рый поставляется вместе с компилятором 
WinAVR (рис. 7), запустить который мож-
но выполнив Пуск 
 Все программы  
WinAVR-20100110 
 Programmers Notepad 
[WinAVR] или C:/WinAVR-20100110/pn/pn.exe 
(в случае установки WinAVR на диск C:/). 
Помимо прочего Programmers Notepad по-
зволяет производить сборку (buid) проекта 
прямо из окна редактора.
Далее необходимо исключить из компиляции 
большинство исходных файлов проекта, отве-
чающих за демонстрацию всех возможностей 
FreeRTOS, оставив лишь основной файл main.c
То есть заменить фрагмент файла makefile:
SRC = \
main.c \
ParTest/ParTest.c \
serial/serial.c \
regtest.c \
$(SOURCE_DIR)/tasks.c \
$(SOURCE_DIR)/queue.c \
$(SOURCE_DIR)/list.c \
$(SOURCE_DIR)/croutine.c \
$(SOURCE_DIR)/portable/MemMang/heap_1.c \
$(PORT_DIR)/port.c \
$(DEMO_DIR)/crflash.c \
$(DEMO_DIR)/integer.c \
$(DEMO_DIR)/PollQ.c \
$(DEMO_DIR)/comtest.c
на:
SRC = \
main.c \
$(SOURCE_DIR)/tasks.c \
$(SOURCE_DIR)/queue.c \
$(SOURCE_DIR)/list.c \
$(SOURCE_DIR)/croutine.c \
$(SOURCE_DIR)/portable/MemMang/heap_1.c \
$(PORT_DIR)/port.c
Подготовительный этап закончен. Теперь 
можно переходить к редактированию фай-
ла main. c. Его содержимое должно принять 
вид:
#include
#include
#ifdef GCC_MEGA_AVR
/* EEPROM routines used only with the WinAVR compiler. */
#include  
#endif
/* Необходимые файлы ядра */
#include “FreeRTOS.h”
#include “task.h”
#include “croutine.h”
/*-----------------------------------------------------------*/
/* Функция задачи 1 */
void vTask1( void *pvParameters )
{
/* Квалификатор volatile запрещает оптимизацию 
/* переменной ul */
volatile unsigned long ul;
/* Как и большинство задач, эта задача содержит 
/* бесконечный цикл */
for( ;; )
{
/* Инвертировать бит 0 порта PORTF */
PORTF ^= (1 << PF0);
/* Задержка на некоторый период Т1*/
for( ul = 0; ul < 4000L; ul++ )
{
/* Это очень примитивная реализация задержки
/* в дальнейших примерах будут использоваться 
/* API-функции */
}
}
/* Уничтожить задачу, если произошел выход 
/* из бесконечного цикла (в данной реализации выход 
/* заведомо не произойдет) */
vTaskDelete( NULL );
}
/*-----------------------------------------------------------*/
/* Функция задачи 2, подобная задаче 1 */
void vTask2( void *pvParameters )
{
volatile unsigned long ul;
for( ;; )
{
/* Инвертировать бит 1 порта PORTF */
PORTF ^= (1 << PF1);
/* Задержка на некоторый период Т2*/
for( ul = 0; ul < 8000L; ul++ )
{
}
}
vTaskDelete( NULL );
}
/*-----------------------------------------------------------*/
short main( void )
{
/* Биты 0, 1 порта PORTF будут работать как ВЫХОДЫ */
DDRF |= (1 << DDF0) | (1 << DDF1);
/* Создать задачу 1, заметьте, что реальная программа должна 
/* проверять возвращаемое значение, чтобы убедиться, 
/* что задача создана успешно */
xTaskCreate(vTask1, /* Указатель на функцию
/* реализующую задачу */
(signed char *) “Task1”, /* Текстовое имя задачи. 
/* Только для наглядности */
configMINIMAL_STACK_SIZE, /* Размер стека – 
/* минимально необходимый*/
NULL, 
/* Параметр, передаваемый задаче, – 
/* не используется */
1, 
/* Приоритет = 1 */
NULL ); /* Получение дескриптора задачи – не используется */
/* Создать задачу 2 */
x Ta s k C r e a t e ( v Ta s k 2 , ( s i g n e d c h a r * ) “ Ta s k 2 ” ,
configMINIMAL_STACK_SIZE, NULL, 1, NULL );
/* Запустить планировщик. Задачи начнут выполняться. */
vTaskStartScheduler();
return 0;
}
/*-----------------------------------------------------------*/
Для сборки проекта из среды Programmers 
Notepad необходимо выбрать пункт меню


Достарыңызбен бөлісу:
1   ...   13   14   15   16   17   18   19   20   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет