Подписаться на получение новых статей на почту:

CooCox CoIDE и STM32CubeMX. Программирование STM32. Шаг №78

Всем привет. В прошлой статье мы с Вами познакомились с ARM. В этой статье описан пример настройки программного комплекса для работы с микроконтроллером STM32, в данном случае stm32f303vct6 (STM32f3 discovery). Сделав обзор программного обеспечения для работы с STM можно выделить следующие:

- IAR, Keil, Atollic TrueStudio. Все коммерческие, несмотря на то что последняя основана на Eclipse;
Eclipse с плагином GNU Tools for ARM Embedded Processor и компилятором ARM-GCC;
CooCox IDE (CoIDE) — основана на Eclipse, бесплатна. Включает в себя всё для работы с ARM;
STMStudio — программа позволяющая в реальном времени наблюдать значения переменных в МК;
STM32CubeMX. Громоздкость и сложность периферии в STM32 на начальном этапе может облегчить данная программа. STM32CubeMX позволяет выбрать контроллер и сгенерировать код инициализации настроив пины и схему тактирования под свои нужды.
Еще одна полезная ссылка http://www.st.com/en/development-tools/st-link.html, по ней можна скачать следующие пакеты:

conf_1.2STSW-LINK004. Содержит STM32 ST-LINK utility – утилита для программирования STM. Здесь мы можем по быстрому проверить микроконтроллер на работоспособность. Устанавливаем программу, в ней находится драйвер STLinkDriver. Подключаем плату (контроллер), в моем случае плата STM32F3DISCOVERY (на контроллере stm32f303vct6). Проверяем диспетчер устройств, получаем PID/VID устройства USB\VID_0483&PID_374B, что соответствует ST-LINK/V2-1.

STMUtilita_1.3

Запускаем STM32 ST-LINK Utility – Target –Connect. Соединение прошло успешно.

 

 

plata_1.4

Хочется добавить что плата идет уже с демонстрационной прошивкой. Также данный файл идет с другими примерами для данной модели с программой STCube, либо можно скачать отдельно пакет en.stm32cubef3.

 

 

 

Driver_1.1

STSW-LINK009 ST-LINK, ST-LINK/V2, ST-LINK/V2-1 USB driver signed for Windows7, Windows8, Windows10. Это драйвера на всякий случай.

На начальном этапе я выбрал CooCox CoIDE и STM32CubeMX. Давайте знакомится.

Cocoox_1

CooCox CoIDE — это бесплатная среда разработки для ARM Cortex (ARM Cortex-M0/M0+/M3/M4 based microcontrollers) микроконтроллеров. CoIDE имеет все необходимые инструменты для создания микроконтроллерных программ высокого качества. Это обрезанная версия инструментальной цепочки Eclipse + GCC (GCC-ARM Embedded). Скачиваем программу CoIDE-V2Beta-20170510.exe по следующей ссылке http://www.coocox.org/software/coide.php. Устанавливаем.

Embedded_ARM_3

Toolchain_4

Далее устанавливаем компилятор GNU Tools for ARM Embedded Processor по ссылке launchpad.net/gcc-arm-embedded, скачиваем установщик последней версии -arm-none-eabi-6-2017-q2-update-win32. Настраиваем путь к компилятору. Project – Select Toolchain Path — Browse — C:\ToolsARM\gcc_arm\6 2017-q2-update\bin.

delete_main_6

Теперь друзья создадим проект Project – New Project. В открывшемся Repositoty, выбираем серию чипа в данном случае STM32F303VC. Созданный файл main.c можем смело удалять.

 

Cube_7

dOWN_;ibr_8 Дальнейшее содержимое проекта мы наполним с помощью STM32CubeMX, является частью STMicroelectronics STMCube ™, который обеспечивает генерацию кода инициализации C с использованием графических мастеров. STM32Cube охватывает весь портфель STM32. Переходим по ссылке www.st.com/web/en/catalog/tools/PF259242, скачиваем внизу страницы через кнопку «Download», распаковываем скачанный архив и устанавливаем. Запускаем STM32CubeMX.exe(в дальнейшем — просто Куб) и через меню «Help->Install New Libraries» запускаем обновление библиотек, нас интересует Software to configure and manage STM32 MCUs и Firmware Package for family STM32H3.

debug_prj_9

MK_Cube_10 Создаем проект New Project и выбираем серию и тип контроллера, либо плату. В визуальном редакторе, я всего лишь настраиваю ногу на котором «сидит» светодиод, как выход: PE8 – GPIO_OUTPUT. В закладку «Clock Configuration» можно пока не заходить, нам все равно внешний генератор будет или внутренний. Наша задача настроить комплекс, скомпилировать файл, загрузить и настроить отладку.

Settings_prj_11

Settings_prj_12

Следующий шаг заходим в настройки проекта. Вкладка Project – settings. Вписываем имя проекта, как и в CooCox, выбираем ту же директорию (Projekt Location). Toolchain/IDE выбираем либо SW4STM32 либо TrueStudio, необходимые файлы сгенерируются одинаковые. И генерируем код: Project – Generate Code. По окончанию – Open folder.

Add_file_13

define_14 Открываем CooCox и простым перетаскиванием добавляем три папки, которые сгенерировал Cube: Drive, Inc, Src. Переходим к настройке проекта. Открываем файл Drivers\CMSIS\Device\ST\STM32F3xx\Include/stm32f3xx.h и определяем тип микроконтроллера, в моем случае #define STM32F303xC.

 

eram_15

Далее необходимо открыть папку: C :\Cocooxprj\test2\ Drivers\CMSIS \Device \ST\STM32F3xx\Source\Templates\gcc и проверить наличие файла startup_stm32f303xc.s. Если отсутствует то скопировать с папки startap, которая генерируется CubeMX. И необходимо заменить _estack на _eram в файле. _estack-значение по умолчанию в библиотеке ST, но называется так называемым _eram. Определяет конец раздела ПЗУ и указатель стека по умолчанию. Компилятор не понимает и выдаст ошибку. Якобы это для поддержания новых контроллеров.

Compile_16

И последнее, если путь C:\Users\Александр \AppData\Roaming \CooCox\CoIDE\config\flash\CooCox-Flash\CoIDE_STM32F3xx_256K \STM32F3xx_256.elf до файла, как у меня содержит кириллицу, то обязательно вылезет ошибка Error: Failed to open flash driver file. Здесь необходимо последний файл переместить в какое-нибудь другое место без кириллицы и прописать это в настройках View->Configuration->Download. Добавляем в основной файл,в цикл следующий код, который через 100мс переключает сотояние ноги:

HAL_GPIO_TogglePin (GPIOE, GPIO_PIN_8);
HAL_Delay (100);
Можно компилировать.

plata_17

Скомпилировали.Теперь заливаем код: Flash – Program Download. C:\CooCox\CoIDE_V2Beta>"C:/CooCox/CoIDE_V2Beta/bin\coflash.exe" program STM32F303VC «C:/Cocooxprj/test2/test2/Debug/bin/test2.elf» --adapter-name=ST-Link --port=SWD --adapter-clk=1000000 --erase=affected --reset=SYSRESETREQ --driver="C:/coocox/stm32f3xx_256.elf"
Erase: Done
Program: Done
Verify: Done

 

Прошивка выполнилась удачно. На рисунке слева результат.
Set_18Теперь про внутрисхемную отладку.для этого заходим в C: \CooCox\CoIDE_V2Beta\bin и открываем батник start_gdbserver.bat, и прописываем в нем реальное расположение файлов.
«C:/CooCox/CoIDE_V2Beta/bin\gdbserver.exe» «C:/CooCox/CoIDE_V2Beta/bin\GDBServerParam.ini»
Настраиваем GDBServerParam.ini
[Adapter]
AdapterName=ST-Link
MaxClock=1000000
TraceMode=0
[Device]
Device=STM32F303VC
[Debug]
DebugPort=SWD
ResetMode=2
IfCacheRom=1
[GDBServer]
IP=127.0.0.1
Port=2009

console_19

Запускаем в командной строке батник для запуска отладчика. Все можно нажимать Debbug из CooCox отлаживать. 

Ниже файл .hex для прошивки:

Blink led at stm32f303vct6  ( Скачали: 1 чел. ) 

plata_20К сожелению в данной программе отладчик не запускается и выдает ошибку gdbserver.exe launch failed! Try to restart debugging again. Поэтому придется в ручном режиме В следующей статье поближе познакомимся с платой STM32F3discovery, и библиотеками для работы с контроллером. 

Просмотрено 132 раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting