сайт для палких паяльників

Для того, чтобы разрабатывать свои программы нам понадобится среда разработки, желательно с дебаггером, и компилятор C.

Я остановился на CooCox CoIDE и GCC. Во-первых этот софт не стоит денег, во-вторых – с ним не возникло никаких вопросов. Установил и начал работать. Правда, CooCox сделан только под Windows. Это не совсем хорошо. И хотя на Ubuntu CooCox работает под wine и даже компиляция проходит успешно, с дебаггером проблема. И работа через wine – это не true way.

UPD: Я выложил версию CoIDE 1.7.8 на Яндексдиск. В дальнейшем будем использовать и другие IDE (читай как установить и настроить Keil uVision5 – IDE для STM32, IAR Workbench – IDE для STM32).

Установим IDE CooCox CoIDE на Windows

  • Качаем и устанавливаем программу CooCox (CoIDE-1.7.8.exe)
    На момент написания статьи была доступна версия 2.0 Бета. Но бета-версиям я стараюсь не пользоваться, поэтому в примерах будет фигурировать версия 1.7.8.
  • Качаем и устанавливаем GCC (gcc-arm-none-eabi-5_3-2016q1-20160330-win32.exe)

Далее имеется в виду, что Вы имеете базовые знания С.

Первая программа

Запускаем CooCox.

Выполняем пункт меню Project -> New

Указываем имя проекта:

CooCox_01

Выбираем Чип:

CooCox_02 CooCox_03

В репозитории выбираем какие именно модули мы будем использовать:

CooCox_04 CooCox_05

Открываем main.c і набираем следующий код программы:


#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"


int main(void)
{
  int i;
  /* Initialize Leds mounted on STM32 board */
  GPIO_InitTypeDef  GPIO_InitStructure;
  /* Initialize LED which connected to PC13, Enable the Clock*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  /* Configure the GPIO_LED pin */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  while (1)
  {
    /* Toggle LED which connected to PC13*/
    GPIOC->ODR ^= GPIO_Pin_13;

    /* delay */
    for(i=0;i<0x100000;i++);
  }
}

CooCox_06 CooCox_07

Компилируем (Project->Build)

При первой компиляции IDE может запросить указать местонахождение компилятора.

CooCox_15

Надо корректно указать место, куда был установлен GCC.

После удачной компиляции заливаем программу в микроконтроллер. Эта программа будет мигать светодиодом на плате. Как залить программу в микроконтроллер мы рассматривали в предыдущей статье.

Если Вы будете заливать прошивку через UART с помощью UART-USB переходника, файл для заливки найдете в директории:
C:\CooCox\CoIDE\workspace\Example_GPIO\Example_GPIO\Debug\bin\Example_GPIO.bin

Если у Вас есть установленный ST-Link программатор, программу в микроконтроллер можно залить прямо с IDE (Flash -> Program Download).

Если при этом возникла ошибка “Error: Flash driver function execute error” Рекомендуется:

  1. Запустить STM32 ST-LINK Utility и выполнить Frimware update.
  2. Скопировать файл STLinkUSBDriver.dll из папки
    C:\Program Files\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility
    в папку
    C:\CooCox\CoIDE\bin
    после чего перезапустить CooCox IDE

Некоторые настройки IDE и параметры компилятора

Repository

Выполняем пункт меню View -> Repository

CooCox_05

Здесь мы выбираем библиотеки, которые необходимы для нашего проекта. При этом IDE копирует в папку stm_lib вашего проекта нужные файлы.

Конфигурация проекта

Далее смотрим  конфигурацию проекта

CooCox_08

Закладка Compile

CooCox_09

в этой закладке устанавливаются ключи компилятора. Мы сюда еще будем возвращаться, а пока обратим внимание на поле Optimization. Это поле задает параметр оптимизации для компилятора. Об оптимизации будет отдельный разговор, пока Вам нужно усвоить, что оптимизация Optimizate Size (-Os) максимально уменьшает объем скомпилированных программ. Но при этом компилятор может выбросить (оптимизировать) некоторые операции, и программа может работать не так, как Вам бы хотелось. Поэтому, на первых этапах, я не рекомендую использовать этот метод оптимизации. Установите Optimizate (-O1).

Закладка Link

CooCox_10

В этой закладке пока нас интересует только поле Library и Linked Libraries. Если Вы будете использовать стандартные библиотеки С, например библиотеку математических функций math Вам нужно будет выбрать “Use base C Library“. Если этого не сделать, то компилятор выдаст ошибку.

Закладка Output

CooCox_11

Здесь указываются куда складывать скомпилированные файлы и в каких форматах.

Закладка User

CooCox_12

Пока в ней мы ничего делать не будем.

Закладка Debugger

CooCox_14

В этой закладке устанавливаются параметры дебаггера. Поскольку мы будем использовать ST-Link, здесь ничего менять не придется.

Закладка Download

CooCox_14

Здесь устанавливаются параметры загрузки программы в микроконтроллер. Здесь нам тоже ничего менять не надо.

Дебаггер

Конечно, можно просто заливать программу в микроконтроллер и смотреть как она работает. Но иногда, возникают проблемы, и этого не достаточно. Хотелось бы разобраться как работает написаная программа. CooCox CoIDE имеет встроенный дебаггер, что очень полезно на этапе изучения микроконтроллера. Также дебаггер поможет найти ошибки в сложных проектах. CooCox CoIDE уже настроена на работу с ST-Link и никаких дополнительных настроек делать не нужно. Достаточно запустить дебаггер Меню (Debug -> Debug). При этом программатор должен быть подключен к компьютеру, а микроконтроллер к программатору. При запуске дебаггера выполняется компиляция проекта, заливка программы в микроконтроллер и ее пошаговое выполнение.

CooCox_Debugger_01

У Вас есть следующие кнопки для управления дебаггером.

CooCox_Debugger_02

Поэкспериментируйте с ними, чтобы понять как они работают.

В закладке Variables можете наблюдать за значением переменных.

CooCox_Debugger_03

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

CooCox_Debugger_06

Если установить Breackpoint (меню Debug -> Todggle Breackpoint) на нужные строки в коде, во время выполнения программы дебаггер будет останавливаться на установленных Breackpoint-ах.

CooCox_Debugger_04 CooCox_Debugger_05

Теперь, после первого знакомства с IDE, можно перейти непосредственно к изучению микроконтроллера STM32F103 и написания своих программ.

Желаю успехов!

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

Translate
Архіви

© 2011-2018 Андрій Корягін, Кременчук - Київ, Україна