LPCXpresso Урок 2. Создание проекта. Классика моргания светодиодом.

В этом уроке рассмотрены базовые сведения по созданию своего проекта в среде от CodeRed с использованием CMSIS. Учимся мигать светодиодом самостоятельно.

Урок является частью учебного курса.

Примеры это конечно хорошо, но надо же и самим что-то писать.

Создание проекта

Всё в той же панели Quickstart Panel выбираем New project... и в нем проект на C для NXP.
Новый С проект для LPC1300 в панеле быстрого запуска

Спросите «Почему не C++ ?» Что ж. Ответа тут два: «А в халявной версии С++ не поддерживается» и естественно «для наших целей достаточно С».

Далее всё до безобразия просто. Указываем имя проекта (пусть будет blinky) в поле Project name жмем Next>. Выбираем LPC1343, так как пишем для него и снова Next>.

И тут самое главное. Ставим флажок Use CMSIS peripheral header files and initialization code (что такое CMSIS описывал DI HALT). И жмем Finish.

После этих манипуляций у нас будет готовый к запуску проект. Только вот суть его в ожидании в бесконечном цикле. Приступим к наполнению.

Знаток кода

Я уже не представляю среды без «Знатока кода». Без него и в блокноте набирать можно, и среда не нужна. Тут он, правда, числится под именем Content Assist, но не суть важно.

Вызывается знаток кода нажатием клавиш <Ctrl>+<пробел>.

Зачем он нужен? Допустим, вы не помните точного названия функции, но помните первые пару символов. Набираете в окне редактора то, что знаете и нажимаете <Ctrl>+<Space>. И вам будет представлен список всех функций и переменных, с описанием их типов, и define’ов начинающихся с данной последовательности. При этом регистр не имеет значения для знатока кода (но не для компилятора).
Окно знатока кода

Можете полистать список и изучить что в нем есть. Посмотреть тип параметров для функции, или просто выбрать нужный вам элемент и нажать <Enter>. Выбранное имя будет подставлено в окне редактирования.

Если же вариант завершения для набираемой последовательности только один, то он будет подставлен сразу, без окна выбора.

Всё это удобно и для быстрого набора. Что бы ни набирать длинное имя функции полностью, с риском опечататься, можете воспользоваться знатоком кода.

Так же знаток кода позволяет просмотреть все поля структур/объектов. Знаток кода вызывается автоматически, с некоторой задержкой, после набора точки ‘.’ или стрелки ‘->’ после имени объекта. Можно, например, получить доступ к полям структуры нулевого порта ввода-вывода:
Окно знатока кода для порта ввода-вывода 0

Вообще средство заслуживает, что бы его использовали. А когда начнете им пользоваться, сами поймете почему.

Набираем код

Редактируем файл main.c до получения следующего:

#ifdef __USE_CMSIS
#include "LPC13xx.h"
#endif

// TODO: insert other include files here

// TODO: insert other definitions and declarations here
void delay_ms(int ms) {
	while(ms--) {
		volatile int i = 5000;
		while(i--);
	}
}

int main(void) {
	// TODO: insert code here
	LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6); // подаем такты на порт ввода вывода
	LPC_GPIO0->DIR |= (1<<7);		// настраиваем PIO0.7 на вывод (светодиод LPCXpresso)
	while(1) {
		LPC_GPIO0->DATA |= (1<<7);	// подаем на светодиод единицу
		delay_ms(500);
		LPC_GPIO0->DATA &= ~(1<<7);	// подаем на светодиод нуль
		delay_ms(500);
	}
	return 0 ;
}

Здесь мы написали свою функцию задержки, воспользовались услугами знатока кода, что бы узнать какие есть регистры у порта ввода-вывода и подсмотрели из примера как инициализировать порты правильно. В коде имеются магические константы, но ничего, потерпим. Самого кода-то кот наплакал, да и комментарии имеются.

Собираем проект

Сборка проекта будет запущена автоматически при запуске отладки, но можно её вызвать и самостоятельно, выбрав в Quickstart panel пункт Build ‘blinky’ [Debug] (где blinky это имя проекта). Либо же воспользовавшись кнопкой Build All на тулбаре:
Кнопка сборки проекта в Toolbar'е

И если всё прошло хорошо, то вы получите результат:
Окно с результатом сборки проекта

Получаем 2644 байт[1][2] кода и можем приступать к отладке, которая уже была описана.

Ошибки сборки

Если же что-то пошло не так, то компилятор (или линкер) вас обругают. Все ошибки сборки проекта удобно подсвечиваются в окне редактора и дереве проектов:
Подсветка ошибок в окне редактора кода

Так же можно открыть окно ошибок из меню Windows -> Show View -> Other… и в группе General выбрать Problems. Получите окно со сводкой всех ошибок:
Окно ошибок сборки проекта

Ну а далее всё просто. Смотрите на что ругается и ищите, что вы сделали не так.

В качестве заключения

Надеюсь, что изложенный материал был понятен. В прикрепленном файле содержится мой проект (со всеми результатами компиляции). Но для того что бы вы поняли материал, вам не следует его использовать, а требуется выполнить описанные действия самостоятельно (и желательно несколько раз). Чем лучше вы знаете среду разработки, тем легче сам процесс разработки. И хорошо, что бы вам не приходилось каждый раз, при выполнении какого-либо действия, лезть в шпаркалки.

Файлы: blinky_gpio.zip


[1] Полученный вами размер не обязательно совпадет с приведённым мною. Размер будет зависеть от версии компилятора, библиотек и прочего. Цифра дана лишь в качестве ориентира.

[2] Так же не следует напрямую сравнивать её с размерами кода в AVR и прочих мк. Это разные семейства и разные возможности. Да, на авр аналогичный код занял бы байт 40, Но! При увеличение кода размер выростет так же "экспоненциально". Тут же присутствует много библиотечного кода с инициализацией и настройкой, который свойственен большим проектам, в итоге рости размер будет не столь быстро. Одна и та же программа (по возможностям) на LPC может занимать как больше места на чем на AVR, так и меньше (например работа с картами памяти SD/MMC с файловой системой FAT).

Hosted by uCoz