Янв 222014
 

С некоторой поры озадачился поиском бесплатной среды разработки. IAR и Keil предлагают бесплатные версии с ограничением размера выходного файла, для изучения вполне достаточно. Однако, 32 килобайта – это совсем немного, у меня сейчас в проекте микроконтроллер STM32F103RC с 256 килобайт флэша и программа уже скоро вылезет за эти ограничения. Поэтому начал подбирать бесплатную IDE, без подобных ограничений.

Пробовал Coocox и чисто Eclipse с плагинами. Все понравилось, однако в Eclipse иногда возникали проблемы с дебаггером, а в Coocox мой проект, где идет передача данных из таблицы в памяти через DMA в 2 модуля SPI, не заработал корректно, иногда на выходе SPI шел какой-то “мусор”. Так пока я не разобрался в причинах, вроде бы все настроил как надо, возможно все же где-то я ошибся.

Недавно попробовал EmBlocks, вот ссылка на сайт, где описаны возможности среды разработки и можно скачать последнюю версию. Пока что каких-то серьезных выводов я не сделал, поскольку не совсем “распробовал”. Но первые впечатления положительные, проекты на STM32F103 и STM32L152 создал без проблем. Далее поделюсь первым опытом настройки проекта.

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

1 

Если создаем новый проект, то далее предлагается выбор

2

Выбираем каталог и название проекта

3

Нужные конфигурации проекта – Debug, Release или обе

4

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

5

Следующее окно, жмем ОК

6

Здесь ничего не меняем

7

Переходим на вкладку Target settings и отмечаем пункт Run to main

8

Теперь, после нажатия ОК, снова видим появление тех же окон с настройками. Все нормально, просто были сделаны настройки для конфигурации Debug, а теперь те же настройки надо сделать для конфигурации Release.

Теперь можно увидеть все “дерево” проекта и пустую заготовку программы

9

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

10

11

Затем в окно программы я скопировал простейший код для платы STM32L-DISCOVERY, где в обработчике прерывания от таймера инвертируется состояние выхода порта (мигает светодиод) с периодом 0,5 секунды.

#include "stm32l1xx.h"

 void TIM2_IRQHandler(void)
  {
    TIM2->SR &= ~TIM_SR_UIF;
    GPIOB->ODR ^= GPIO_OTYPER_ODR_6;
  }

int main()
{
  NVIC_SetPriority(TIM2_IRQn, 1);
  NVIC_EnableIRQ(TIM2_IRQn);

  //GPIOB init
  RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
  GPIOB->MODER |= GPIO_MODER_MODER6_0;
  GPIOB->OTYPER &= ~GPIO_OTYPER_OT_6;
  GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR6;
  GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6;

  //TIM2 init
  RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
  TIM2->PSC = 2096;
  TIM2->ARR = 500;
  TIM2->DIER |= TIM_DIER_UIE;
  TIM2->CR1 |= TIM_CR1_CEN;

  while(1);
}

Можно компилировать и собирать проект

12

Если все правильно, то получим такой результат

13

Теперь можно подключать свой девайс и запускать отладку

14

Для просмотра регистров периферии надо открыть соответствующее окно

16

При этом понадобилось указать, что используется вот такой вот нужный файл. Для этого надо зайти в меню Debug->Interfaces

15

17

Итак, я без особых проблем, чисто интуитивно настроил проекты и запустил отладку для микроконтроллеров STM32F103 и STM32L152. Даже в help не заглянул ни разу. Кстати, help здесь содержит список функций из стандартных библиотек языка С, каждая из функций имеет краткое описание.

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

  21 Responses to “EmBlocks — IDE для STM32”

  1. Ктота пробывал запустить EmBlocks с stm32vldiscovery? Пол дня провозился, результата ноль, пишет could’n find any STLink/v2 devices. STLink’a у меня нет.

    • Да, действительно получил с этой платой то же самое. У этой платы старая прошивка STLink, еще первой версии. Вижу только это отличие от других плат. Тем более, что и программа пишет о том, что не видит STLink/v2.
      Вот и первая «ложка дегтя»…

      • Попробуй так:
        1. В меню «Tools» -> «Configure tools..» -> «Add» ->
        «Name» — (или по-своему)
        «Executable» —
        «Parameters» —
        «Working Directiry» —

      • Попробуй так:
        1. В меню «Tools» -> «Configure tools..» -> «Add» ->
        «Name» — ST-Link CLI (или по-своему)
        «Executable» — полный путь до ST-Link_CLI.exe
        «Parameters» — -c SWD -P «${PROJECT_DIR}${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}.hex» -V -Rst -Run
        «Working Directiry» — путь к папке с ST-Link_CLI.exe

  2. Увидел Ваш обзор, решил попробовать среду. Действительно вещь удобная, особенно по сравнению с IAR. Но вот такой вопрос, не разобрались ли Вы с тем, как закрепить окна Debug (Watch? memory. register). А то приходится каждый при перезапуске сессии октрывать их вручную снова.

    • Нет, не разбирался.

      • Так и не нашел как закрепить эти окна. Заметил ещё одну особенность: иногда при создании нового проекта для контроллеров STM32L1 серии иногда «зависает» программа на этапе настроек интерфейса отладки (Debug interface option). вот и вторая «ложка дягтя» 😉

      • Уважаемый ChipSpace, может быть Вам встречалась таблица, где перечислены устройства STM32 по потреблению (Low density, Medium и т.д). Если Вы видели такое, поделитесь ссылочкой пожалуйста.

        P.S. Извиняюсь что не в той теме пишу это.

        • Нет, не приходилось искать такие данные. Ну а в даташитах вроде должно быть?

          • В шите есть таблицы, в заголовках которых указано: Потребление для устройств с низким потреблением(Low), потом идет таблица для Medium, и т.д. То есть пользователь сам должен понимать что его МК относится к тому или иному типу.
            На сайте STM видел как то раз такую таблицу. Она нужна, чтобы путаницы не возникало на работе)

          • P.S Извиняюсь что долго не отвечал, был в отпуске.

  3. у меня одного сайт emblocks.org лежит? Как скачать-то его?

  4. загрузил проект ИАРа в него- все заработало.
    Получается, что прерывания
    void EXTI0_IRQHandler(void)
    такие же как и у ИАРа?

    • Миша, я к этому сайту тоже не достучусь, недоступен он в данный момент.
      EXTI0_IRQ и другие прерывания и их обработчики не в IAR, а в файлах «stm32l1xx.h» и т.п., в общем в библиотеках разработчика железа.

  5. Да, спасибо. Просто когда АВР стал на эклипсе писать, пришлось обработчики по другому называть, а тут аж приятно порадовало.

    Один момент с этим emblocks-
    я написал, что все работает, а это не так- USART шлет данные, но вместо читабельных букв я получаю яяяяяяяяяяяяяяяяяяяяяяяяя
    Хотя тот же тестовый проект и под IAR работает и под Кейл уже собрал. Там все без проблем. А тут не хочет. Есть опыт с УСАРТом?

  6. С УСАРТ вроде бы не пробовал. Дело может быть не в среде, проверь скорости обмена.

  7. radiomanoff

    А мне понравилась данная IDE,покрайней мере не тупит так как СoCox.Но скачать с оф-сайта не представляется возможым.Порывшись в сети нашел версию Em::Blocks 2.20, на всяк пожарный выложил для сообщества на Яндекс-диск https://yadi.sk/d/UKt31o3pbr2nW.
    Вот «сварганил» на ней проект — ds18b20 и штатный LCD stm32l diskovery — http://radiomanoff.at.ua/index/stm32l_diskovery_ds18b20_i_vstroennyj_lcd/0-67 .Датчик подключен на один с Free I/O пин PD2.

  8. Да уж, при всех своих плюсах Кокос и загружается бывает долго и иногда слишком навязчив редактор со своими подсказками.

  9. А откуда берется файл stm32Lxx.svd, который в меню Debug->Interfaces?
    В самой EmBlocks его нет.

  10. SPinFly

    FreeRTOS через эту IDE ставится?