Free IDE на основе Eclipse. STM32+CooCox IDE+ST-Link

оригинал статьи: http://we.easyelectronics.ru/STM32/prostoy-start-stm32coocox-idest-link....

При написании статьи была использована CoIDE 1.2.5 www.coocox.org/Tools/CoIDE-1.2.5.exe
В сентябре 2011 появилась CoIDE 1.3.0 www.coocox.org/Tools/CoIDE-1.3.0.exe с поддержкой ST-Link из коробки и исправленным багом при работе с J-Link, так что качайте лучше ее
Знаю, что есть много сред для ARM, но все они какие-то непонятные мягко скажем… и чтобы поморгать hello world надо либо убиться ап стену с эклипсом или отдаться ипериализму в виде Keil, Iar, Atollic итп которые тоже не очень то приятны на первый укус.
Короче говоря -скачав свободный CooCox IDE (естественно он на Еклипсе) в течение десяти минут я создал и закомпилировал моргалку, чего мне не удавалась долгое время.
Как ни странно :) создать проект можно через меню -Project указать таргет и назвать проект.

вот что можно вбить чтобы поморгать диодиками на Дискавери32 (которая без L)
+ не забыть подключить библиотеки из репозитария и оставить оптимизацию на -Os в меню Project->Configuration

Если нажать на библиотеку то справа появиться ее описание
 

//поправленный код
#include<stm32f10x_rcc.h>
#include<stm32f10x_gpio.h>

#include "stm32f10x.h"
#include "stm32f10x_conf.h"

void Delay(volatile uint32_t nCount);


GPIO_InitTypeDef GPIO_InitStructure;

volatile int main(void)

{
// init for GPIO (LED)
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_8 | GPIO_Pin_9 ;       // two LED (guess on what pin!!)
        GPIO_Init(GPIOC, &GPIO_InitStructure);



    while(1)
    {
        GPIO_WriteBit(GPIOC,GPIO_Pin_8,Bit_RESET);
                GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_SET);
                Delay(8000000);
                GPIO_WriteBit(GPIOC,GPIO_Pin_9,Bit_RESET);
                GPIO_WriteBit(GPIOC,GPIO_Pin_8,Bit_SET);
                Delay(8000000);
    }

}

//-------
void Delay(volatile uint32_t nCount)
{
    for (; nCount > 0; nCount--);
}


После создания проекта и вбивания какого-то первого кода (отсутствие delay для меня пока тайна) его нужно скомпилировать и можно отладить! да через ST-LINK_gdbserver можно скачать здесь dl.dropbox.com/u/14601294/STM32_stuff/ST-LINK_gdbserver.zip (ссылку стырил каюсь...) обыкновенным ST-Link который есть на дисковери! Драйвер для ST-Link есть в GDB сервере, либо здесь www.st.com/internet/evalboard/product/219866.jsp на страничке Design support ближе к низу. Вот Debug Config

Есть маааленький нюанс в конфиг GDB для ST-Link добавьте -d и поменяйте порт на 2331 (или скачайте он приложен) и он будет нормально стартавать

Или прописать все в командной строке и поменять порт (как подсказали камрады) — все само будет запускаться (не надо тыкать в батник)

После переустановки IDE с нормальным путем C:\CoIDE перестали нормально работать предыдущие конфиги отладки- решение ключ только -d порт 61234 и все в порядке. При этом пути кракозябры уходят и вобщем все хорошо :)

Примеры для STM32 coocox.org/Examples.php?mfr=ST

ps Из косяков у меня win7 64 инсталляционный путь — C:\\Program Files (x86)\\CooCox\\CoIDE
там же храняться проекты в Workspace — при этом выводятся кракозябры вместо размера при компиляции см первый скриншот, но если проект сохранить например на D:\discovery то все нормально компилится, но чето не отлаживается.
pps исправил пример и иногда gdb сервер зависает и надо передергивать usb и перезапускать среду (+иногда желательно проверить не висят ли STM_GDB_server в памяти)

pps Окошко настройки отладки для CoIDE 1.3.0

У меня на Win7 64 в CoIDE 1.3.0 не работала отладка, помог способ подсказанный coracio STLinkUSBDriver.dll скопировать из ST-Link Utility в каталог CoIde/Bin.

Обратная связь

Интересуют вопросы реализации алгоритмов, программирования, выбора электроники и прочая информация, постараюсь осветить в отдельных статьях

пишите мне на netdm@mail.ru