Всем привет, сегодня расскажу, как настроить среду разработки coocox ide и программу для инициализации различной периферии микроконтроллера STM32CubeMX для совместной работы.
Перед началом работы необходимо установить:
- Coocox IDE v2
- GNU ARM Embedded Toolchain
- STM32CubeMx с сайта st.com
- Драйвера для ST-Link (ST-Link utility) с сайта st.com
Давайте приступим к настройке. Первым делом создадим пустой проект в CoIDE
Выбираем нужный микроконтроллер
Нажимаем New Project
Далее нужно указать папку,в которой будет создан проект. Желательно, чтобы в пути к файлам проекта не было русских символов. Иначе могут возникнуть различные проблемы при работе с проектом, например, проект не будет компилироваться не выдавая при этом никаких ошибок.
В результате получим пустой проект, в котором будет один только файл main.c
На самом деле файл main.c нам не нужен, его нам создаст STM32CubeMX, так что текущий файл просто удаляем из проекта.
Теперь временно свернем окно Coocox IDE и запустим программу STM32CubeMX. Нажмем New Project
Теперь создаём нужную конфигурацию проекта. Для начала помигаем встроенным светодиодом. Для этого устанавливаем PC13 как OUTPUT и на вкладке Pinout в разделе SYS включаем отладку Debug -> Serial Wire
Перейдём на страницу настроек Project->Setting
Toolchain/ IDE выбираем SW4STM32. Нажимаем Ok
Теперь нажимаем Project->Generat
Их необходимо добавить к проекту CoocoxIDE простым перетаскиванием
Теперь если попробовать скомпилировать проект, то мы получим ошибку
D:\workspace\Bli
Эта ошибка говорит нам о том, что не выбран тип микроконтроллера в файле stm32f1xx.h.
Откроем его и посмотрим содержимое
Для нашего микроконтроллера необходимо выбрать STM32F103xB
Откроем конфигурацию проекта View->Configuration и в поле Defined Symbols добавим нашу константу STM32F103xB. Нажимаем Add
Теперь при попытке собрать проект получаем следующую ошибку
[cc] collect2.exe: error: ld returned 1 exit status
Это ошибка линкера, так что переходим View->Configuration->Linker и выключаем флажок Use Memory Layout from Memory Window
Внизу страницы выбираем Scatter файл, который уже создан в папке нашего проекта. Workspace/BlinkProject/STM32F103C8Tx_FLASH.ld
Теперь при нажатии кнопки Build наш проект успешно компилируется и собирается.
Попробуем записать наш файл в микроконтроллер. Нажимаем Download code to Flash. У меня выскакивает ошибка
Error: Failed to open flash driver file
Переходим на вкладку View->Configuration->Download и видим, что в поле Programming Algoritm путь к файлу содержит русские символы
Я просто перенесу нужный файл в другую папку и добавлю новый путь к этому файлу.
Теперь прошивка заливается в микроконтроллер.
Давайте добавим код для моргания светодиодом в главный цикл while программы
1
2
|
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); //Toggle the state of pin PC9
HAL_Delay(100); //delay 100ms
|
Теперь светодиод моргает с интервалом в 100мс.
Отладка проекта:
Программа отладчика находится в папке Bin каталога Coocox, в моем случае это D:\CooCox\CoIDE_V2Beta\bin
Для запуска отладчика нужно из консоли запустить файл start_gdbserver.bat. Но перед этим нужно подправить пути, прописанные в этом файле. Изначально они указывают на несуществующие папки. В моем случае bat файл выглядит следующим образом:
1
|
«D:\CooCox\CoIDE_V2Beta\bin\gdbserver.exe» «D:\CooCox\CoIDE_V2Beta\bin\GDBServerParam.ini»
|
Как видим в качестве параметра отладчику передается ini файл. Его тоже нужно открыть и скорректировать для нашего отладчика и микроконтроллера.
GDBServerParam.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[Adapter]
AdapterName=ST—Link
MaxClock=1000000
TraceMode=0
[Device]
Device=STM32F103RB
[Debug]
DebugPort=SWD
ResetMode=2
IfCacheRom=1
[GDBServer]
IP=127.0.0.1
Port=2009
|
После этого открываем в проводнике папку D:\CooCox\CoIDE_V2Beta\bin, зажимаем клавишу shift и кликаем правой кнопкой мыши на свободном месте. Появится контекстное меню, в котором выбираем «открыть окно команд». Или просто открываем консоль и переходим в нужную нам папку.
Далее запускаем start_gdbserver.bat. Видим, что запустился отладчик и он ожидает подключения на порту 2009
Теперь в программе coocox мы можем нажать клавишу debug, CoIDE подключится к отладчику и появится возможность отлаживать проект.
Есть одно важное замечание: после того, как мы закончили отлаживать проект и нажали клавишу Stop, отладчик тоже закончит работу и перед следующим сеансом отладки его снова нужно будет запустить в командной строке с помощью start_gdbserver.bat.
Краткая инструкция:
- Установить драйверы ST-LINK v2,CoIDE, GNU ARM Embedded Toolchain, STM32CubeMX
- Создать пустой проект в CoIDE
- Удалить файл main.c из проекта
- Создать проект в STM32CubeMx. Папку проекта указать туже, что и в CoIDE. Toolchain указать SW4STM32
- Сгенерировать код в CubeMX
- Добавить папки Drivers, Inc, Src в проект CoIDE перетаскиванием
- В свойствах проекта добавить константу STM32F103xB или другую для вашего контроллера
- В настройках линкера установить scatter file
- В настройках проекта на вкладке Download проверить, чтобы путь к файлу Programming Algoritm был без русских символов.
- Отредактировать файлы start_gdbserver.bat и GDBServerParam.ini для того, чтобы иметь возможность отлаживать проект.