Codeblocks arduino ide как настроить

Обновлено: 02.07.2024

Code::Blocks — свободная интегрированная среда разработки (IDE) с отрытым исходным кодом, которая поддерживает использование различных компиляторов. По умолчанию Code::Blocks использует компилятор MinGW, который поставляется в комплекте (можно скачать дистрибутив и без встроенного компилятора). MinGW – это вариант компилятора GNU C/C++ для Windows. MinGW – это сокращение "Minimalist GNU для Windows". Набор MinGW включает инструменты для программирования с открытым исходным кодом, которые не зависят от каких-либо платных сторонних библиотек. Он используется многими средами разработки (Visual Studio использует собственный компилятор). MinGW включает набор GNU Compiler Collection (GCC), включая компиляторы C, C ++, ADA и Fortran. Code::Blocks имеет открытую архитектуру, что позволяет ему масштабироваться за счёт подключаемых модулей (можно писать программы как под windows, linux, так и под различные микропроцессоры типа avr и stm32). Отладчик кода в Code::Blocks поддерживает точки останова в исходном коде или в данных, которые обрабатывает программа.

Установка компилятора MinGW


Нажмимаем Install и получаем следующее окно.


Здесь в поле Installation Directory указываем расположение файлов компилятора. По умолчанию это C:\MinGW, его и оставляем. Нажимаем Continue и начинается загрузка и установка менеджера для установки MinGW.


Нажимаем Continue и получаем следующее окно.


Для программированя на C++ выбираем для установки пакеты mingw32-base-bin (A Basic MinGW Installation) и mingw32-gcc-g++-bin (The GNU C++ Compiler), а затем жмём в меню Installation -> Apply Changes. Появится окно, в котором будет отображаться загрузка выбранных пакетов.


По завершении загрузки пакетов нажимаем на кнопку Close

При первом запуске Code::Blocks автоматически обнаружит установленный компилятор. При возникновении проблем необходимо перейти в меню Settings -> Compiler. и на вкладке Toolchain executables проверить правильность пути к MinGW, а также имена файлов компилятора и линковщика. Теперь можно создавать проект.

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

Для создания проекта необходимо перейти в меню File -> New -> Project. . Либо сразу нажать на кнопку Create a new project на стартовой странице.


В появившемся окне выбираем необходимый тип проекта. Здесь мы видим, что Code::Blocks имеет большое количество шаблонов проектов. В нашем случае это Console application (консольное приложение).


В следующем окне выбираем используемый язык программирования. Выбираем C++ и нажимаем на кнопку Next.


Далее в поле Project Title вписываем название проекта. В нашем случае это Test. Тут же указываем расположение проекта на диске (поле Folder to create project in). В указанной нами папке Code::Blocks автоматически создаст папку с ранее указанным названием проекта. Указав имя папки и имя файла, нажимаем на кнопку Next.


В следующем окне выбираем компилятор, а также сценарии сборки. По умолчанию выбран GNU GCC Compiler, который мы и будем использовать. Сценарии сборки позволяют получить несколько версий одного приложения. По умолчанию предполагается два сценария: Debug (используется при отладке) и Release (сценарий компиляции готового приложения). Хотя бы один из сценариев должен быть выбран. Если выбраны оба сценария, то в дальнейшем можно будет переключаться между ними.


Жмём Finish и получаем минимальную программу, так называемый Hello World!


Нажмимаем F9 для компиляции и запуска программы и получаем следующее окно.


Обратите внимание на кнопки на панели инструментов, предназначенные для запуска и компиляции программы.


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

Если открытый для редактирования файл был изменен, то на его вкладке слева от имени появится звездочка как на рисунке ниже. Для сохранения программ, как и во многих других приложениях достаточно нажать сочетание клавиш Ctrl+S. Расположение (путь) и имя отрытого в данный момент файла отображается в строке состояния, в левой нижней части окна.


Если ваши программы имеют небольшой объем и состоят только из одного файла, то лучше создавать не проект, а просто новый файл (File -> New -> Empty file). Связано это с тем, что если у вас несколько проектов, то Code::Blocks будет компилировать и запускать только активный проект. Определить какой проект у вас активен в текущий момент можно по состоянию окна Management, в котором показываются все открытые проекты и файлы. Если одновремено открыто несколько проектов, то название активного будет выделено полужирным шрифтом. Если окно отсутствует, то открыть его можно через меню View -> Manager.


Для переключения между проектами необходимо навести указатель мыши, на тот проект, который вы необходимо сделать активным и затем дважды кликнуть левой кнопкой мыши на названии проекта либо кликнуть один раз правой кнопкой мыши и в появившемся контекстном меню выбрать пункт Activate project. В этом же меню доступны другие действия с проектом (в том числе добавление в проект новых файлов).

Частой ошибкой является редактирование файлов одного проекта, а запуск и тестирование другого проекта. Также если у вас открыт проект и просто отдельный файл программы, то Code::Blocks будет компилировать и запускать только активный проект. Поэтому в учебных целях, когда весь проект зачастую состоит из одного файла желательно создавать не проекты, а отдельные .cpp файлы.

Поддержка кириллицы в консоли

Проблема отображения кириллических символов в консоли Windows связана с тем, что консоль в этой операционной системе имеет собственную настройку кодовой страницы. Если Windows использует кодировку cp1251 (она же windows-1251), то консоль по умолчанию использует cp866 использовавшуюся в MS-DOS. Поэтому для корректного ввода и вывода кириллицы на консоль надо использовать пару функций SetConsoleCP() и SetConsoleOutputCP() соответственно. В качестве единственного параметра обеим функциям передается номер кодовой страницы – 1251. Для использования кодировки UTF-8 необходимо передать значение CP_UTF8.

Ниже показан пример программы, которая сначала просто выводит строку с кириллическими символами, а затем считывает строку и выводит ее обратно на экран.

Далее необходимо запустить программу, щёлкнуть левой кнопкой мыши по заголовку окна (где показывается путь к запущенному .exe файлу) и в контекстном меню выбрать пункт Свойства. Затем на вкладке Шрифт установить шрифт Lucida Console и выбрать удобный размер шрифта (там же можно настроить и другие параметры). После этого символы кириллицы будут корректно отображаться. Данную настройку достаточно выполнить один раз, для других программ и проектов будет достаточно установить кодовую страницу.

Следует заметить, что при использовании только функции setlocale(LC_ALL, "Russian") вывод осуществляется в cp1251, а ввод – в cp866. Это приводит к тому, что в памяти программы введённая с кириллическими символами строка хранится в другой кодировке. Наглядно это можно увидеть, если в показанном примере закомментировать вызов функции SetConsoleCP(). Строка которую выдаст программа будет отличаться от той, что ввели с клавиатуры.

Дополнительные настройки

Чтобы общаться с внешним миром у микроконтроллера есть порты ввода-вывода, в каждом из которых есть несколько отдельных битов (считай выводов), на которых можно установить ноль (0) или единицу (1).

ATmega328

У ATmega328 таких портов 3 это порты B,C и D . На каждом порту по 8 битов ( за исключением порта C он 7 - разрядный ) которыми можно (нужно) управлять. Но управлять с некоторыми ограничениями.

D0 и D1 используются для прошивки микроконтроллерах на плате Arduino через USB;

C6 – используется для перезагрузки ( reset ) ;

B6 и B7 - на этих выводах микроконтроллера подключается внешний кварцевый резонатор .

Остальные биты можно использовать если они не задействованы. Для наших изысканий будем использовать:

порт B – B0, B1, B2, B3, B4, B5 ( соответственно выводы микроконтроллера с 1 4 по 1 9 );

порт C – С0, С1, С2, С3, С4, С5 (выводы — с 23 по 28);

порт D – D2, D3, D4, D5, D6, D7 (выводы — 4, 5, 6, 11, 12, 13).

Необходимо учитывать что ATmega328 производится в разных корпусах и нумерация выводов может отличатся

ATmega328P

2.2. Регистры управления портами.

Управление портами достаточно простое. Используется три восьми битных регистра -

DDRx, PORTx и PINx, где x имя порта (в нашем случае B,C и D ).

DDRx – Настройка разрядов порта x на вход или выход.

PORTx – Управление состоянием выходов порта x (если соответствующий разряд настроен как выход), или подключением внутреннего подтягивающего резистора (резистор подтягивает разряд к 1 если соответствующий разряд настроен как вход).

PINx –Чтение логических уровней разрядов порта x.

Настройка и работа портов сводится к трем операциям в зависимости от настройки входа или выхода.

Ввод:

В регистре DDRx на нужный разряд устанавливаем 0 обозначая его как ввод;

При необходимости на указанном разряде устанавливаем 1 для подключения подтягивающего резистора (резистор подтягивает указанный вывод к 1), подтягивающий резистор включают для уменьшения внешних помех и его можно не подключать;

Считываем из регистра PINx с того-же разряда состояние 0 или 1.

Вывод:

В регистре DDRx на нужный разряд устанавливаем 1 обозначая его как вывод;

В регистр PORTx на этот разряд устанавливаем его состояние 0 или 1;

В регистре PINx можно считать текущее состояние каждого разряда порта.

Пример: На выводе 5 порта B установить 1 ( вывод 17 микроконтроллера переключить на логическую 1 )

Установили разряд DDRB 5 в 1 настроив вывод как вывод

Установили разряд PORT B 5 переключив вывод микроконтроллера в 1. Дальнейшее переключение этого вывода производится без изменения регистра DDRx если не понадобится переключить разряд порта на ввод.

Регистр PIN B можно не использовать, если только для проверки состояния выводов порта.

Рекомендация: биты регистров желательно переключать по отдельности, чтобы не вносить путаницу в программу микроконтроллера, если нет необходимости использовать все выводы порта как ввод или вывод.

2.3. Программа

Разберем программу на C по строкам .

В программе вставлен бесконечный цикл while(1), чтобы микроконтроллер не выполнил ничего лишнего. Все действия с портами в программе выполнены с использованием поразрядных операций в языке C. Что дало возможность управлять только одним разрядом (одним выводом микроконтроллера) порта B.

На использованном нами выводе микроконтроллера ATmega328 в Arduino UNO и Arduino Nano v3 подключен светодиод, поэтому в первой программе не придется даже собирать схему, достаточно подключить Arduino к компьютеру.

2. 4. Проект на C и компиляция

Программное обеспечение готово, программа написана, микроконтроллер тоже есть в виде Arduino. Начнем.

Запускаем CodeBlocks, в меню File >> New >> Project начинаем создавать проект.

Выбор проекта

Выбираем AVR Project и Go.


Путь сохранения проекта

В поле Project title указываем название проекта, ниже в Folder to create project in указываем путь к папке куда создаем проект и жмем Next.

Конфигурация создаваемого проекта

В следующем окне оставляем галку только Create “Release” configuration и опять Next.

Выбор микроконтроллера

Выбираем наш микроконтроллер (у меня atmega328p ) устанавливаем частоту (для Arduino Nano v3 - 16МГц ) и оставляем создание только hex файла и Finish.

И наконец в созданном проекте находим файл main.c и открываем его. Внутри видим:


Заменяем эту заготовку нашей программой и жмем

Происходит компиляция проекта и внизу видим


2.5. Прошиваем микроконтроллер

Все прошивка готова, она находится в папке проекта (выбранной при создании проекта). У меня C:\avr\Program1\bin\Release\Program1.hex этот файл и является нашей прошивкой.

Начнем прошивать. Запустим программу ArduinoBuilder

ArduinoBuilder

В окне выбираем файл hex (находится в папке проекта CodeBlocks >> bin/Release/project1.hex) нашего проекта, выбираем Arduino и частоту микроконтроллера и жмем кнопку чем программировать (у меня COM9 ) обычно это com порт отличный от 1. После сего проделанного смотрим мигающий диод.

На этом задача минимум выполнена. Рассмотрен подборка программного обеспечения, изучены порты ввода/вывода и регистры их управления, написана программа на C скомпилирована и прошита в микроконтроллер. И все это можно применить для микроконтроллеров AVR за исключением программы ArduinoBuilder которая в основном создана под Arduino, но и ее можно заменить при использовании например программатора USBASP и программы AVRDUDE_PROG, основная часть материала полностью применима.

Опять же, дабы не захламлять топик, задумывавшийся как краткий, непонятного вида строчками скрипта, попросту прикреплю wizard.script к материалу.
Аналогичным образом поступаем (при необходимости) и с конфигурацией «STM32F4Discovery».
Таким нехитрым образом получаем возможность в любое время дня и ночи создать проект для любой демо-платы в два щелчка пальцами. Естественно, аналогично можно создавать конфигурации для любых других МК, для самодельных отладочных плат, и т.д.



ЗЫ. Во время загрузки обсуждаемой редакции «Code::Blocks» меня немного напрягала надпись «Arduino Edition» на заставке, и я ее стер. Изображение находится в следующей локации: «CodeBlocks\share\CodeBlocks\images\splash_1211.jpg». Можно вставить туда свою фотографию. :D


Несколько слов о настройке GDB сервера. В «комплекте» обсуждаемой редакции «Code::Blocks» имеются два оных сервера: OpenOCD и STLink. Nike Khin настраивал openOCD, мы же попробуем работать с STLink GDB.
Забегая вперед, скажу, что STLink работает с «Code::Blocks» ощутимо быстрее, чем OpenOCD.
Как было сказано выше, в комплект редакции «Code::Blocks Arduino Edition» входит STLink GDB, однако по какой-то причине у меня работать он отказался, поэтому я опишу процесс настройки «с нуля», да и пользователям стандартного «C::B» полезно будет.
Качаем STLink GDB сервер (v.0.5.3) отсюда (осторожно, скачивание начнется автоматически после нажатия), распаковываем архив в папку «Code Blocks\utils\stlinkwin\» (папку создаем самостоятельно).
Далее нам необходимо создать в среде «Code::Blocks» новый инструмент: Tools->Configure Tools…->Add.
В открывшемся окне заполняем поля:
Name: stutil
Executable: $(APP_PATH)\utils\stlinkwin\bin\st-util.exe
Working directory: $(APP_PATH)\utils\stlinkwin
Опцию «Launching options» оставляем в варианте «Launch tool in a new console windows and wait for a keypress when done». В общем виде все выглядит вот так:



Теперь настраиваем проект на работу с данным GDB сервером. Идем «Project->Properties», находим вкладку «Debugger», в окне «Select target:» выбираем «Project», и заполняем поля:
IP address: localhost
Port: 4242 (openOCD «слушает» на 3333 порту, а STLink – на 4242)



И завершающий штрих — тут же, во вкладке «Debugger», открываем «Additional GDB commands», и в окне «After connection» вписываем две команды, которые будут посланы автоматически GDB-серверу после установки соединения:

monitor reset halt
load

Жмем «ОК». Сконфигурировано и готово к работе.
Для начала нам нужно установить соединение с отладчиком. Снова идем «Tools», и в списке инструментов выбираем наш «stutil». В возникшей консоли STLink салютует нам об успешном соединении и считанных параметрах тарджет-контроллера, к которому он получил доступ.



Теперь можем запускать отладку в «Code::Blocks».



Процесс пошел.



Конечно же, «Code::Blocks» с помощью GDB не предоставит тех возможностей, что способны предоставить дебагеры специально предназначенных и разработанных для встраиваемых систем IDE (IAR, Atollic, Keil и т.д.). Однако, средств, которые мы получаем, используя «Code::Blocks», вполне достаточно для осуществления успешной отладки.

left slice

Обычно я отвечаю так: «раз ты задаешь мне этот вопрос, значит, точно не нужна!».

R/C: Случайная статья

Arduino - хорошая платформа для самоделкиных вроде меня. Удобная, все в ней уже есть.

В чем проблема?

Программная часть мне далеко не всем нравится. Особенно ужасна Arduino IDE. Каждый файл открывается в новом окне, оставляя пустое запущенное окно IDE. И прочие мелкие глупости, которые привыкших к удобству Visual Studio, Borland/Embarcadero RAD IDE расстраивают и вызывают неудовольствие. К счастью, мы можем использовать любую IDE какая понравится. Для готовых проектов, которые только скомпилировать и прошить или собственных пробных поделок вполне годится тот огрызок Wiring, который компилируется Arduino IDE. Для удобства работы я использую Visual Micro Arduino - удобство Visual Studio, быстрая компиляция, прошивка стандартными средствами.

AVRDudeR — встраиваем avrdude в IDE Code::Blocks
20.03.2012 14:33


AVRDudeR2.0.1.10

Arduino - хорошая платформа для самоделкиных вроде меня. Удобная, все в ней уже есть.

В чем проблема?

Программная часть мне далеко не всем нравится. Особенно ужасна Arduino IDE. Каждый файл открывается в новом окне, оставляя пустое запущенное окно IDE. И прочие мелкие глупости, которые привыкших к удобству Visual Studio, Borland/Embarcadero RAD IDE расстраивают и вызывают неудовольствие. К счастью, мы можем использовать любую IDE какая понравится. Для готовых проектов, которые только скомпилировать и прошить или собственных пробных поделок вполне годится тот огрызок Wiring, который компилируется Arduino IDE. Для удобства работы я использую Visual Micro Arduino - удобство Visual Studio, быстрая компиляция, прошивка стандартными средствами.

Arduino без Arduino IDE

Ступенькой выше стоит прямая работа с микроконтроллером, тут уж в вольны делать что захотите. Часто это удобнее чем разбираться в начинке библиотек Arduino. Но приходится использовать либо AVR Studio либо стороннюю IDE и компилятор от Atmel (благо, он совершенно бесплатный и входит в AVR Tools). Все бы хорошо, но про Arduino они ничего не знают и прошить ее не могут. И вот тут начинаются неудобства. Кому неинтересны детали, переходите сразу к делу, скачиваем и настраиваем :) AVR Studio неплохая среда, правда версия 4 довольно примитивная, а 5я тяжеловесна. Ни та ни другая кроме как через фирменный программатор прошивать не умеют. Засада. Я взял проект бутлоадера, который совместим с AVR Studio, притворяясь AVRISP программатором. Интерфейс же с ним в AVR Studio оказался далеко не самым удачным.

Что делать?

Code::Blocks IDE

Автоматизация запуска avrdude с нужными параметрами

Мне эта ситуация надоела и я написал небольшую программку, которая получает в командной строке 2 параметра: - имя конфигурационного файла - имя файла прошивки Утилита сама запускает avrdude с параметрами, указанными в конфигурационном файле (просто файл с готовыми настройками для прошивания), дожидается прошивки и закрывается. Это позволяет прошивать проект в любой имеющийся микроконтроллер в процессе отладки в 2 клика прямо из Code::Blocks. Если запустить с одним параметром, прочитает соответствующий файл конфигурации, если с двумя, попытается автоматически залить прошивку из второго параметра.


Если заинтересовало, качаем AVRDudeR Встраивается в IDE очень просто (дольше рассказывать, чем сделать): Добавляем в меню Tools два пункта меню - для изменения настроек и для прошивки

Для изменения настроек прописываем:



По сути в настройках прописаны: первый параметр - файл avrdude.ini, который мы сохраняем при настройке в папку проекта, второй параметр - имя файла прошивки. Процесс настройки выглядит так:

  • Подключаем программатор или плату Arduino с которой будем работать, чтобы в системе появился нужный COM порт.
  • Запускаем Tools->R AVRduder: Setup, выбираем настройки и сохраняем файл с настройками в каталоге своего проекта под именем avrduder.ini (или то, которое указали в настройках). Закрываем утилитку

Немного о настройках:



Саму программу можно использовать для заливки прошивки напрямую, не встраивая. просто дважды щелкаем в поле Firmware, выбираем файл прошивки (или просто вставляем путь к файлу руками) и жмем Flash Firmware. Файл конфигурации работает и в этом случае. Если сменился контроллер или подключили в другой порт, через другой программатор, просто выбираем Tools->R AVRDuder: Setup и открывается файл с настройками этого проекта (или настройками по умолчанию, если в папке с проектом avrduder.ini отсутствует). Меняем порт или программатор, контроллер или что там у нас поменялось и сохраняем обратно avrduder.ini в папку проекта. Все. Да, avrdude.ini можно просто таскать из проекта в проект, если работате с одинаковыми платами/программаторами. Просто скопируйте его в папку нового проекта и можно ничего не настраивать вообще. Ах да, чуть на забыл, в Code:Blocks я выбрал GNU AVR GCC Compiler и указал только папку к AVR Tools. А проект настроил вот так:


Тогда компилятор создает файл .elf.hex, который мы и прошиваем. Если у вас по-другому, измените второй параметр, передаваемый в AVRDudeR, чтобы он передавал имя файла прошивки. Надеюсь, кому-то это сбережет нервы, повысит производительность и позволит сосредоточиться на собственно работе над идеей, а не возиться с кучей приблуд при каждой компиляции и заливке проекта. Если утилита окажется полезной, пользуйтесь на здоровье.

Читайте также: