Coocox coide 1.7.8 [2015, среда программирования микроконтроллеров arm]

WebcamMax 7.2.8.8 Portable [2011, Работа с веб-камерой]

Год выпуска: 2011Жанр: Работа с веб-камеройРазработчик: WebcamMaxСайт разработчика: http://www.webcammax.com/Язык интерфейса: Мультиязычный (русский присутствует)Тип сборки: PortableРазрядность: 32/64-bitОперационная система: Windows 2000, XP, Vista, 7 Описание: WebcamMax — продвинутая утилита для работы с веб-камерой. Программа, добавляющая изумительные видеоэффекты на все вебкамеры, даже без реальной камеры. Программу можно использовать по умолчанию в таких приложениях, как ICQ, AIM, MSN, Camfrog, Skype, Paltalk, Yahoo, ANYwebcam, Stickam. Можно настроить WebcamMax Full так, чтобы он …

Программы / Интернет и сети / Разное (RSS, ТВ, радио и др)
Подробнее  

Власний скрипт лінкера

  • Вимикаю «Use memory layout from main window», тисну «Edit». 
  • Копіюю отриманий файл в директорію проекту (наприклад, ./app, де лежать *.c та *.cpp файли).
  • Натискаю три крапочки, ліворуч від Edit, щоб обрати саме цей файл. 
  • Додаю його до проекту. (При тому воно каже, що файл вже існує, питається, чи його перезаписати. Підтверджую. Здається, воно копіює із згаданої директорії в c:/users, але без попереднього кроку іноді себе дивно веде.) Потрібно це, щоб після зміни цього файлу відбувалася перекомпіляція. 
  • І ось тут стає зовсім весело. В більшості випадків (!бета, блін!), Configuration зразу забуває всі зміни. Закриваєш вкладку, відкриваєш — все по старому. Після багатьох спроб дійти толку з GUI, змушений був редагувати файл проекту вручну. Закриваємо CoIDE 2, відкриваємо в текстовому редакторі <projectname>\<projectname>.coproj, робимо у ньому наступне (вказую лише змінені рядки, шукати їх можна по значенню поля name): 

Запуск ThreadX на STM32

Для понимания зависимостей между компонентами Azure RTOS приводим соответствующий рисунок из документации:

Как видим, ThreadX является основой для всего остального. Ядро ThreadX обеспечивает многопоточность, переключение контекста, синхронизацию потоков. Поддерживаются таймеры, очереди сообщений, семафоры, мьютексы, флаги событий, пулы байтов и блоков (в каком-то смысле аналог кучи в C++, но с потокобезопасным управлением).

В практической части данной статьи мы будем рассматривать именно ThreadX, чтобы понять, с чего начать работу с ним. И хотя разработчики предоставляют большое количество примеров для готовых средств разработки, интерес представляет именно настройка «с нуля» на каком-то микроконтроллере, для которого нет примера, ведь к этому при разработке своего устройства мы рано или поздно придем.

Будем использовать относительно недорогую и популярную плату STM32F4Discovery, но весь процесс можно с успехом повторить на любом микроконтроллере, например, на сверхдешевом и доступном STM32F103C8T6.

STM32F4Discovery удобна тем, что уже имеет встроенный отладчик ST-Link, большое количество периферии для экспериментов, а все выводы микроконтроллера (STM32F407VGT6) выведены на контакты.

Перечень проектов

Example_First_Programm — GPIO. Первая программа. Мигание светодиодом

Example_GPIO — GPIO. Пример работы с входами и выходами

Example_StepMotor — GPIO. Пример работы с шаговым двигателем 28BYJ-48

Example_Nokia5110 — GPIO. Remap. Пример работы с выходами

Example_WG12864A — GPIO. Пример работы с LCD дисплеем WG12864A (KS0108/KS0107)

Example_ADC — ADC. Простой пример работы с АЦП

Example_ADC_DMA — ADC. Работа с АЦП с использованием DMA

Example_ADC_Injected — ADC. Работа с АЦП с настройкой Injected каналов

Example_ADC_Temperature — ADC. Использование встроенного термометра

Example_ADC_Watchdog — ADC. Аналоговый Watchdog

Example_Sonar — EXTI. Пример работы с сонаром HC-SR04

Example_USART1 — USART. Пример простого терминала

Example_USART_DMA — USART. Отправка данных через последовательный порт с помощью DMA

Example_DFPlayerMini — USART. Пример работы с MP3 плеером DFPlayer Mini. Функция произнесения числа

Example_SysTick — Таймер. Системный таймер SysTick. Задержка на SysTick

Example_TIM_CLK — Таймер. Генерирование прерывания через равные промежутки времени

Example_TIM_Time — Таймер. Измерение времени между двумя событиями

Example_PPM — Таймер. Захват сигнала

Example_Encoder — Таймер. Работа с энкодером

Example_Encoder_IT — Таймер. Работа с энкодером

Example_PWM_LED — Таймер. PWM. Управление яркостью светодиода

Example_PWM_RGB — Таймер. PWM. Управление цветом RGB светодиода

Example_PWM_Servo — Таймер. PWM. Управление сервоприводом

Example_PWM_Sound — Таймер. PWM. Генерирование звука

Example_RTC — RTC. Пример работы с часами реального времени

Example_BKP — BKP. Пример работы с регистрами Backup registers

Example_FLASH — FLASH. Пример сохранения настроек во FLASH память

Example_Watchdog — Watchdogs. Пример использование IWDG и WWDG

Example_I2C_Master — I2C. Работа с шиной I2C на примере датчика атмосферного давления BMP280

Example_I2C_Slave — I2C. Работа с шиной I2C в качестве Slave устройства

Example_BMP280 — I2C. Пример работы с датчиком атмосферного давления BMP280

Example_MS5611 — I2C. Пример работы с датчиком атмосферного давление MS5611

Example_USB_Virtual_Com_Port — USB. Пример работы с USB. Виртуальный последовательный порт

Example_USB_Keyboard — USB. Пример работы с USB. Эмуляция клавиатуры и мышки

Example_USB_Mass_Storage — USB. Пример работы с USB. STM32F103 в качестве Mass Storage Device

Example_PWR_Sleep — PWR. Использование энергосберегающего режима SLEEP

Example_PWR_Stop — PWR. Использование энергосберегающего режима STOP

Example_PWR_Standby — PWR. Энергосберегающий режим Standby. Пробуждение от Wake Up Pin

Example_PWR_Standby_RTC — PWR. Энергосберегающий режим Standby. Пробуждение от RTC

Example_Bootloader — Bootloader. Пример собственного загрузчика

Example_BLDC — Управление бесколлекторным двигателем с датчиками Холла (Sensored Brushless)

Example_PMSM — Управление PMSM с датчиками Холла с помощью STM32

Смотри также:

  • 1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор
  • 2. STM32. Программирование. IDE для STM32
  • 3. STM32. Программирование STM32F103. GPIO
  • 4. STM32. Программирование STM32F103. Тактирование
  • 5. STM32. Программирование STM32F103. USART
  • 6. STM32. Программирование STM32F103. NVIC
  • 7. STM32. Программирование STM32F103. ADC
  • 8. STM32. Программирование STM32F103. DMA
  • 9. STM32. Программирование STM32F103. TIMER
  • 10. STM32. Программирование STM32F103. TIMER. Захват сигнала
  • 11. STM32. Программирование STM32F103. TIMER. Encoder
  • 12. STM32. Программирование STM32F103. TIMER. PWM
  • 13. STM32. Программирование STM32F103. EXTI
  • 14. STM32. Программирование STM32F103. RTC
  • 15. STM32. Программирование STM32F103. BKP
  • 16. STM32. Программирование STM32F103. Flash
  • 17. STM32. Программирование STM32F103. Watchdog
  • 18. STM32. Программирование STM32F103. Remap
  • 19. STM32. Программирование STM32F103. I2C Master
  • 20. STM32. Программирование STM32F103. I2C Slave
  • 21. STM32. Программирование STM32F103. USB
  • 22. STM32. Программирование STM32F103. PWR
  • 23. STM32. Программирование STM32F103. Option bytes
  • 24. STM32. Программирование STM32F103. Bootloader
  • STM32. Скачать примеры
  • System Workbench for STM32 Установка на Ubuntu
  • Keil uVision5 – IDE для STM32
  • IAR Workbench – IDE для STM32
  • Управление бесколлекторным двигателем постоянного тока (BLDC) с помощью STM32
  • Управление PMSM с помощью STM32

Бесплатные инструменты разработчика для микроконтроллеров STM32, рекомендуемые STMicroelectronics

Выбор микроконтроллера STM32 от компании STMicroelectronics, одного из лидеров в области производства полупроводников и предлагающего решения по всему спектру электронных приложений, является самым простым путем для инноваторов, с целью выпустить новые продукты. Сегодня у разработчиков есть широкий выбор бесплатных интегрированных сред разработки (IDE) для микроконтроллеров STM32.

Пользователи STM32 могут выбирать из трех IDE от ведущих производителей, являющихся бесплатными и созданными в тесном сотрудничестве с STMicroelectronics. Можно рассматривать альтернативы между основанными на Eclipse средами разработки, такими как CooCox CoIDE или Ac6 System Workbench для STM32, а также средой  Keil MDK-ARM. Они не имеют ограничений на размеры кода, поддерживаются все необходимые для STM32 конфигурационные файлы и прошивки, также как и интуитивное аппаратное обеспечение, такое как платы STM32 Nucleo или комплекты Diskovery Kit, используемые для отладки и проектирования.

Ac6 System Workbench для STM32 и CooCox IDE поддерживают все устройства STM32, в основе которых лежат ядра ARM Cotex-M0, M0+, M3 и M4. Бесплатная среда Keil MDK-ARM для STM32 помогает перейти от устаревшей 8-битной архитектуры к 32-битной разработке Cortex, поддерживая серии STM32F0 и STM32L0, включающих Cortex-M0 и M0+ без каких-либо ограничений.

Все три среды разработки могут работать на платформах Windows. Заявлено, что Ac6 System Workbench в 2015 станет доступна для ОС Linux и Mac OS X. Производители IDE обеспечивают техническую поддержку и постоянные обновления для пользователей.

Эти инструменты могут быть загружены абсолютно бесплатно с сайтов производителей:

Как видно из результатов опроса, наиболее часто разработчики используют Keil MDK-ARM, которая в бесплатной версии имеет ограничение на длину кода в 32 килобайта для микроконтроллеров серий выше чем STM32F0 и STM32L0. Полностью бесплатную CoIDE китайской фирмы CooCox занимает почетное второе место в этом рейтинге.

Для Mac OS X, а это именно та операционка в которой я в основном работаю, я попробовал установить связку редактор кода Eclipse + компилятор GCC ARM + OpenOCD для прошивки и отладки. Потратив несколько дней, но так пока и не поняв, как работать с отладчиком OpenOCD, я решил попробовать более простой вариант и сделал свой выбор в пользу CoIDE, хотя версия только для Windows долго не давала мне принять это решение. Свои эксперименты пока я буду проводить и описывать, используя именно эту IDE. Возможно, чуть позже я опять вернусь к связке Eclipse + GCC ARM + OpenOCD, либо дождусь когда появится версия Ac6 System Workbench для MacOS X и попробую ее.

Что это вообще такое?

Микроконтроллер – это специализированная микросхема, объединяющая микропроцессор, память и периферийные устройства в одном корпусе. В отличие от «большого» компьютера имеет ограниченные объемы собственно этой самой памяти: типовые значения и для RAM, и для ROM – десятки-сотни килобайт.

Как правило, микроконтроллер не имеет MMU (хотя есть и исключения, но это именно исключения, которые правильнее будет уже отнести к совершенно другой категории систем-на-кристалле), то есть отсутствует аппаратная поддержка механизма виртуальной памяти, что не позволяет использовать «полновесные» ОС даже при расширении объема встроенной памяти внешними микросхемами.

В связи с перечисленным, код под микроконтроллеры разрабатывается особым образом, в специализированных IDE, а операционные системы вообще выделены в особый класс. Основной функцией ОС для микроконтроллера является реализация многозадачности, а бонусом обычно идут разные стеки сети, файловых систем и т.д. Ни о каком окружении и вспомогательных утилитах, как в настольных ОС, здесь речи не идет. Так, например, в ОС для микроконтроллеров нет процессов, есть только задачи = нити = потоки, а сама ОС, как правило, компонуется с пользовательским кодом в единую микропрограмму («прошивку»). Для понимания особенностей таких ОС рекомендуем статью. Отметим, что в ThreadX, несмотря на прямое отсутствие процессов, есть их аналог — модули.

Впрочем, ограниченные объемы ресурсов никак не мешают использовать микроконтроллеры для решения узкоспециализированных задач. Более того, по меркам микроконтроллера, 128 КБ ROM и 64 КБ RAM – уже довольно внушительные цифры. Микроконтроллер, несмотря на отсутствие «большой» ОС, успешно может записывать файлы на USB флешку, обмениваться данными по сети, а некоторые реализации содержат специальные инструкции для цифровой обработки сигналов, то есть могут решать достаточно «тяжелые» задачи.

Все изложенное описывает картину достаточно укрупненно, так как везде есть исключения и оговорки. Например, на микроконтроллерах без MMU можно запустить ucLinux – порт «большого» Linux специально для микроконтроллеров без MMU (без защиты памяти, естественно, со всеми вытекающими последствиями). Как правило, для этого потребуются дополнительные микросхемы памяти, так как встроенной хватит только для загрузчика этой самой ucLinux.

ADVANCED Codecs for Windows 7 and 8 4.2.8+ x64 Components [2013, Кодек] 32/64 bit

Год выпуска: 2013Жанр: КодекРазработчик: Shark007Сайт разработчика: http://shark007.net/win7codecs.htmlЯзык интерфейса: АнглийскийТип сборки: StandardРазрядность: 32/64 bitОперационная система: Windows 7,8Описание: ADVANCED Codecs for Windows 7 and 8 — это свежая версия программы, которая представляет из себя полное автоматизированное средство, предназначенное для установки основных для вашей системы Windows кодеков и декодеров. Этот пакет не имеет никаких дополнительных плееров и не изменяет системные ассоциации файлов которые установлены по умолчанию. Кроме того, при установке он авт …

Отладка проекта:

Программа отладчика находится в папке Bin каталога Coocox, в моем случае это D:\CooCox\CoIDE_V2Beta\bin

Для запуска отладчика нужно из консоли запустить файл start_gdbserver.bat. Но перед этим нужно подправить пути, прописанные в этом файле. Изначально они указывают на несуществующие папки. В моем случае bat файл выглядит следующим образом:

Как видим в качестве параметра отладчику передается ini файл. Его тоже нужно открыть и скорректировать для нашего отладчика и микроконтроллера.

После этого открываем в проводнике папку D:\CooCox\CoIDE_V2Beta\bin, зажимаем клавишу shift и кликаем правой кнопкой мыши на свободном месте. Появится контекстное меню, в котором выбираем «открыть окно команд». Или просто открываем консоль и переходим в нужную нам папку.

Далее запускаем start_gdbserver.bat. Видим, что запустился отладчик и он ожидает подключения на порту 2009

Теперь в программе coocox мы можем нажать клавишу debug, CoIDE подключится к отладчику и появится возможность отлаживать проект.

источник

Программное обеспечение для работы с контроллером

Keil Uvision 4

Для ARM архитектуры разработано множество сред разработки. К самым известным и дорогостоящим относятся инструменты фирм Keil и IAR System. Программы этих компаний предлагают самые продвинутые инструментарии для оптимизации кода. Также дополнительно существуют различные системы – USB стеки, TCP/IP-стеки и прочие. Применяя системы Keil, пользователь получает хороший уровень технической поддержки.

Также для STM32 используется среда разработки Eclipse и построенные на ней системы Atollic TrueStudio (платная) и CooCox IDE (CoIDE) (бесплатная). Обычно используется последняя. Ее преимущества перед другими средами разработки:

  • Свободно распространяемое программное обеспечение;
  • Удобство использования;
  • Имеется много примеров, которые можно загрузить.

Единственный недостаток среды разработки CooCox IDE – сборка есть только под Windows.

Инструменты, которые нам понадобятся

Эксперименты будем проводить на Windows 10 (подойдет также любая, начиная с 7).

Будем также использовать STM32 HAL — набор универсальных API для микроконтроллеров STM32. Есть много мнений и «за», и «против» использования HAL. На наш взгляд, HAL, внося некоторый «оверхед», все же позволяет получить хорошо читаемый и модифицируемый код. HAL не требует скачивания, все необходимые библиотеки будут загружены автоматически при создании проекта.

Скачиваем и устанавливаем STM32CubeIDE — бесплатная IDE от STMicroelectronics на базе открытых инструментов.

Загружаем исходный код ThreadX c GitHub. Существуют, конечно, «правильные» способы использования репозитория с исходным кодом в виде клонирования репозитория или создания форка, но для простоты описания просто скачиваем его как архив: зеленая кнопка «Clone», затем «Download zip». UPD (см. комментарии): для того, чтобы структура исходного кода полностью соответствовала данному руководству, необходимо использовать определенный коммит. Для того, чтобы его получить, сначала установите клиент Git для командной строки, затем откройте командную строку, создайте временную директорию, перейдите в нее и выполните команды:

Затем переименуйте результирующую директорию из threadx в threadx-master.

Теперь подключаем плату STM32F4Discovery через разъем Mini-USB к компьютеру, проверяем наличие устройства «ST Link» в диспетчере устройств. Плата питается по этому же кабелю.

CoIDE: как два пальца об асфальт

Ну, тут полная халява. Если провести аналогию с автомобилями, то CoIDE нельзя превратить в бульдозер или велосипед по выбору, зато тачка очень удобная — сел и поехал.

Далее появится список МК, в котором нужно выбрать STM32F100RB, установленный на плате STM32VLDisvovery:

Появится окно так называемого «репозитория», в котором установкой галочек можно выбирать подключаемые к проекту библиотеки. При этом учитываются зависимости между библиотеками, что не может не радовать. В следующем уроке мы будем разбирать порты ввода-вывода (GPIO) так что отметим соответствующую библиотеку. Так как мы ещё не создали ни одного проекта, CoIDE предложит нам создать новый, на что мы согласимся:

По умолчанию папка для проектов располагается в установочной папке CoIDE и называется «workspace». Вообще, это не очень хороший вариант, я бы советовал создать отдельную папку где-нибудь в «Моих документах» или ещё где, но это личное дело каждого, а я решил ничего не трогать — в своей виртуальной машине в VirtualBox я могу мусорить сколько душе угодно (:Скелетный проект по причине, изложенной в начале статьи (про плюсы и минусы), создавать бессмысленно, так что сразу сделаем проект для следующей статьи и назовём его stm32vld_quickstart:

Вот и всё, первый проект создан, можно даже приступать к кодингу. Но приступим мы к нему в следующей статье, а пока можете глянуть на файловую структуру проекта:

  • cmsis — тут лежит стандартная библиотека CMSIS, общая для всех Cortex-M3
  • cmsis_boot — название странноватое, ведь там лежит не только код первичной инициализации микроконтроллера, но и пара заголовочных файлов от стандартной библиотеки STM32F10x
  • stm_lib — STM32F10x Standart Peripheral Library, уже описанная при настройке Eclipse
  • build.xml — настройки сборки проекта, руками туда лучше не лазить, да и CoIDE сама этот файл не открывает, а показывает окно настроек проекта.
  • link.ld и memory.ld — скрипты линковщика, как stm32f100rb.ld, упоминавшийся выше, только зачем-то разделённый на два файла.
  • main.c — исходный код, пока ещё девственно чистый

Слева, кроме структуры проекта, так же показывается модель МК, для которой мы пишем, и список подключенных библиотек — идеально для склеротиков вроде меня (:

Теперь нужно зайти в Debug→Debug Configuration… и установить параметры отладки/прошивки:

  • Adapter: ST-Link
  • Port: SWD
  • Max Clock(Hz): 1M (1 МГц)

Теперь выбираем в меню Debug→Debug и CoIDE скомпилирует проект, зальёт прошивку на МК и запустит отладку:

Вот и вся настройка. Конечно, за простоту приходится платить, но в данном случае не деньгами, а минусами, перечисленными в начале статьи. Ну да ладно, зато оно работает сразу (:

Сравнение STM32 с Arduino

Сравнение STM32 с Arduino

По техническим характеристикам Ардуино проигрывает STM32. Тактовая частота микроконтроллеров Ардуино ниже – 16 МГц против 72 МГц STM32. Количество выводов GRIO у STM32 больше. Объем памяти у STM32 также выше. Нельзя не отметить pin-to-pin совместимость STM32 – для замены одного изделия на другое не нужно менять плату. Но полностью заменить ардуино конкуренты не могут. В первую очередь это связано с высоким порогом вхождения – для работы с STM32 нужно иметь базис. Платы Ардуино более распространены, и, если у пользователя возникает проблема, найти решение можно на форумах. Также для Ардуино созданы различные шилды и модули, расширяющие функционал. Несмотря на преимущества, по соотношению цена/качество выигрывает STM32.

Семейство микроконтроллеров STM32 отличается от своих конкурентов отличным поведением при температурах от -40С до +80 С. Высокая производительность не уменьшается, в отличие от Ардуино. Также можно найти изделия, работающие при температурах до 105С.

Что есть у Microsoft?

Microsoft традиционно занимается «большими» ОС, среди которых тоже есть специализированные решения в виде Windows 10 IoT Enterprise LTSC, значительно дешевле настольных систем и со специальными возможностями встраивания. Windows 10 IoT Enterprise требует практически полноценного (хоть и промышленного и малогабаритного) компьютера для запуска. Впрочем, есть редакция Windows 10 IoT Core, ориентированная только на приложения UWP, где требования к системе ниже: она успешно запускается на Raspberry Pi 2.

Здесь же нельзя не упомянуть класс операционных систем Windows Embedded Compact, которые могут работать на системах, по вычислительным возможностям находящимся где-то между полноценными компьютерами и микроконтроллерами. Compact – отдельный класс ОС, не совместимых с «настольной» Windows, требующих особых средств разработки. Последний выпуск датируется 2013-м годом, далее ОС развития не получила, но все еще продается и поддерживается, как и несколько предыдущих версий.

С развитием Интернета вещей Microsoft постепенно стал предлагать решения и для систем с ограниченными ресурсами, таких, как микроконтроллеры. Предполагается, что именно на микроконтроллерах будут создаваться именно сами устройства Интернета вещей, отправляющие данные в облако и принимающие команды от него.

На данный момент доступны и сторонние реализации среды выполнения для C#: https://www.nanoframework.net/, https://www.wildernesslabs.co/. Отметим, что последняя аппаратная платформа вполне подходит и для запуска ucLinux, так что к выбору ОС следует относиться, как к выбору инструмента для решения задачи: что удобнее, то и применяем.

В 2019 году Microsoft поглощает Express Logic, и среди решений для микроконтроллеров от Microsoft появляется Azure RTOS, которая раньше называлась X-WARE IoT Platform. В Azure RTOS входит ядро ThreadX вместе с дополнительными компонентами, а также добавлены средства подключения к Azure IoT Hub и Azure IoT Central. Само название Azure RTOS подчеркивает применение совместно с сервисами Azure для устройств Интернета вещей.

В состав Azure RTOS входят:

  • сама ОС ThreadX, а именно, ядро, планировщик, реализующий многозадачность и синхронизацию задач;
  • стек TCP/IP NetX/NetX Duo;
  • стек FAT FileX;
  • стек USB Host/Device/OTG USBX;
  • реализация графического интерфейса GUI: GUIX и инструмент разработки (GUIX Studio);
  • реализация равномерного износа флеш-памяти для FileX: LevelX;
  • система трассировки событий TraceX;
  • SDK для Azure IoT поверх NetX Duo – готовые средства для подключения устройства к службам Azure.

Нельзя не отметить одно из специализированных решений высокой готовности: Azure Sphere. Это — безопасная платформа для приложений интернета вещей со встроенными механизмами коммуникаций и безопасности. Она представляет собой микроконтроллер (скорее даже SoC) с установленным ядром Linux, а также готовыми облачными сервисом для доставки обновлений безопасности.

STM32 простой и быстрый старт с CooCox CoIDE

В данной статье я хотел бы рассказать о начале работы с микроконтроллерами STM32 в бесплатной среде CoIDE, которая основана на Eclipse. В отличии от IAR и других сред разработки, CooCox CoIDE бесплатна и проста в освоении, а также содержит встроенный отладчик ST-Link, что позволяет начинающим изучать STM32 уже через 10 минут заставить вашу плату помигать светодиодом. Если вы еще незнакомы с серией STM32, то рекомендую почитать трилогию об архитектуре STM32, особенностях программирования и прочую полезную информацию.

В качестве STM32 использовалась отладочная плата STM32VLDiscovery доставшаяся нахаляву от фирмы STMicroelectronics с процессором STM32F100RBT6B на борту:

CooCox CoIDE — среда разработки, на базе Eclipse, которая помимо STM32 поддерживает кучу других семейств микроконтроллеров: Freescale, Holtek, NXP, Nuvoton, TI, Atmel SAM, Energy Micro и др. С каждой новой версией CoIDE список МК постоянно пополняется. После успешной установки CoIDE запускаем:

Появится стартовое окно Step 1, в котором необходимо выбрать производителя нашего микроконтроллера. Нажимаем ST и переходим к Step 2 (выбор микроконтроллера), в котором необходимо выбрать конкретную модель. У нас STM32F100RBT6B, поэтому нажимаем на соответствующую модель:

Справа, в окне Help отображаются краткие характеристики каждого чипа. После выбора нужного нам микроконтроллера переходим к третьему шагу Step 3 — к выбору необходимых библиотек для работы:

Давайте создадим простейший проект для мигания светодиодом, как это принято для изучения микроконтроллеров.

Для этого нам понадобится библиотека GPIO, при включении которой, CoIDE попросит создать новый проект. На это предложение нажимаем Yes, указываем папку где будет храниться наш проект и его название. При этом, CoIDE подключит к проекту 3 другие, необходимые для работы библиотеки, а также создаст всю необходимую структуру проекта:

Чем еще хорош CoIDE, это тем, что в нем есть возможность загружать примеры прямо в среду разработки. В вкладке Components вы можете видеть, что почти к каждой библиотеке есть примеры, нажимаем на GPIO (with 4 examples) и видим их:

Туда можно добавлять и свои примеры. Как видно на скриншоте выше, в примерах уже присутствует код для мигания светодиодом GPIO_Blink. Можно нажать кнопку add и он добавиться в проект, но как подключаемый файл, поэтому мы сделаем по другому просто скопируем весь код примера в файл main.c. Единственное, строку void GPIO_Blink(void) замените на int main(void). Итак, нажимаем F7 (или в меню выбираем Project->Build), чтобы скомпилировать проект и. не тут то было!

Среде нужен компилятор GCC, а у нас его нет. Поэтому идем на страничку GNU Tools for ARM Embedded Processors, справа выбираем тип вашей ОС и качаем последнюю версию тулчайна. Затем запускаем файл и инсталируем gcc toolchain. Далее, в настройках CoIDE укажем правильный путь к тулчайну:

Опять нажимаем F7 (Project->Build) и видим, что компиляция прошла успешно:

Осталось прошить микроконтроллер. Для этого при помощи USB подключаем нашу плату к компьютеру. Затем, в настройках дебаггера необходимо поставить ST-Link, для этого в меню выбираем Project->Configuration и открываем вкладку Debugger. В выпадающем списке выбираем ST-Link и закрываем окно:

Попробуем прошить МК. В меню выбираем Flash->Program Download (или на панели инструментов щелкаем по соответствующей иконке) и видим, что МК успешно прошит:

На плате наблюдаем мигающий светодиод, видео или фото я думаю приводить нет смысла, т.к. все это видели.

Также, в CoIDE работают различные режимы отладки, для этого нажимаем CTRL+F5 (или в меню Debug->Debug):

На этом все. Как видите, настройка среды CoIDE и работа с ней очень проста. Надеюсь данная статья подтолкнет вас в изучении очень перспективных и недорогих микроконтроллеров STM32.

источник

Інсталяція

На інсталяції особливо не зупинятимуся — вона менш-більш типова, крім того, добре описана (ще й в картинках) у документації: «Download and Install CoIDE». Коротко:

  • Завантажити IDE можна за посиланням на головній сторінці проекту. Перш ніж перейти до завантаження, потрібно зареєструватися, але реєстрація проста, а CoIDE повністю безкоштовних. [Хоча в Інтернет і лазить постійно, в основному до репозиторію звертаючись, але будемо сподіватися, що авторам оболонки не весь наш код відсилає. 🙂]
  • Інсталяція, в значній мірі, зводиться до натискання «next», але див. згадану «Download and Install CoIDE». Ніяких пробілів чи кирилиці у повному шляху!
  •  Крім самого середовища потрібен компілятор. Орієнтуємося, як і автори середовища, на ARM GCC 4.9 (опис див. тут). Завантажуємо версію для Windows ( gcc-arm-none-eabi-4_9-<дата>-win32.zip), розархівовуємо за шляхом, котрий не містить пробілів та кирилиці. (Взагалі, хороше правило для всіляких інструментів програмерських!)
  • Запустивши середовище, вибираєте пункт «Select Toolchain path» із меню Project,  та вказуєте місце, де лежать програми компілятора (типу arm-none-eabi-gcc.exe ). Зазвичай, це буде піддиректорія bin того місця, куди розархівували компілятор. Все. Але див. також «09.01 Select Toolchain» офіційної документації.
  • C:\CooCox\CoIDE_V2Beta — сама програма
  • C:\Users\%USERNAME%\CoIDE\workspace — директорія за замовчуванням для проектів користувача. (Рідко нею користуюся — надаю перевагу, щоб проекти CoIDE лежали у директоріях, присвячених відповідним продуктам/проектам — програмні продукти, крім власне коду, включають багато ще чого).
  • C:\Users\%USERNAME%\Appdata\Roaming\CooCox\CoIDE — директорія для тимчасових файлів, завантажених компонент, конфігурації і т.д. Іноді може бути корисним заглянути до неї.

Настройки проекта

Несколько элементов должны быть заданы в проекте. Для этого надо щелкнуть правой кнопкой мыши на корень дерева проекта и выберите « Настройки ».

В « Include Path », добавить следующие пути с помощью кнопок « Add » и « Workspace »:

  • inc
  • STM32F4-Discovery
  • STM32/STM32F4xx_StdPeriph_Driver/inc
  • STM32/STM32_USB_HOST_Library/Class/MSC/inc
  • STM32/STM32_USB_HOST_Library/Core/inc
  • STM32/STM32_USB_OTG_Driver/inc
  • STM32/fat_fs/inc

В « Defined Symbols », добавить следующие Символы :

  • USE_STDPERIPH_DRIVER
  • STM32F4XX
  • USE_USB_OTG_FS
  • MEDIA_USB_KEY

Придется тогда запретить компиляцию из некоторых источников, поскольку они не являются необходимыми для проекта. Чтобы сделать это, выберите файл или папку с правой кнопкой мыши и выбрать пункт « Exclude from Build ». Это должно быть сделано для следующих файлов :

  • STM32/fat_fs/src/option
  • STM32/fat_fs/src/diskio.c
  • STM32/STM32_USB_HOST_Library/Class/HID
  • STM32/STM32_USB_OTG_Driver/src/usb_bsp_template.c
  • STM32/STM32_USB_OTG_Driver/src/usb_dcd_int.c
  • STM32/STM32_USB_OTG_Driver/src/usb_dcd.c
  • STM32/STM32_USB_OTG_Driver/src/usb_otg.c

Наконец, последний пункт-это ОЧЕНЬ ВАЖНО!!!. Придется изменить файл загрузки, чтобы он требует инициализации тактирвания

Я не знаю, если это просчет (ошибка) в CooCox, потому что рутина есть, но только не называется…

Это делается путем редактирования /cmsis_boot/startup/startup_stm32f4xx.c :

Строка 144: раскомментировать строку

 extern void SystemInit(void); /*!< Setup the microcontroller system(CMSIS) */

Строка 291, добавить просто перед вызовом main():

 SystemInit();