2. STM32. Программирование. IDE для STM32
Для того, чтобы разрабатывать свои программы нам понадобится среда разработки, желательно с дебаггером, и компилятор 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 для STM32 System Workbench for STM32 Лично я перешел на System Workbench for 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
Указываем имя проекта:
Выбираем Чип:
В репозитории выбираем какие именно модули мы будем использовать:
Открываем 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++);
}
}
Компилируем (Project->Build)
При первой компиляции IDE может запросить указать местонахождение компилятора.
Надо корректно указать место, куда был установлен 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" Рекомендуется:
- Запустить STM32 ST-LINK Utility и выполнить Frimware update.
- Скопировать файл STLinkUSBDriver.dll из папки C:\Program Files\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility в папку C:\CooCox\CoIDE\bin после чего перезапустить CooCox IDE
Некоторые настройки IDE и параметры компилятора
Repository
Выполняем пункт меню View -> RepositoryЗдесь мы выбираем библиотеки, которые необходимы для нашего проекта. При этом IDE копирует в папку stm_lib вашего проекта нужные файлы.
Конфигурация проекта
Далее смотрим конфигурацию проектаЗакладка Compile

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

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

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

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

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

Здесь устанавливаются параметры загрузки программы в микроконтроллер. Здесь нам тоже ничего менять не надо.
Дебаггер
Конечно, можно просто заливать программу в микроконтроллер и смотреть как она работает. Но иногда, возникают проблемы, и этого не достаточно. Хотелось бы разобраться как работает написаная программа. CooCox CoIDE имеет встроенный дебаггер, что очень полезно на этапе изучения микроконтроллера. Также дебаггер поможет найти ошибки в сложных проектах. CooCox CoIDE уже настроена на работу с ST-Link и никаких дополнительных настроек делать не нужно. Достаточно запустить дебаггер Меню (Debug -> Debug). При этом программатор должен быть подключен к компьютеру, а микроконтроллер к программатору. При запуске дебаггера выполняется компиляция проекта, заливка программы в микроконтроллер и ее пошаговое выполнение.У Вас есть следующие кнопки для управления дебаггером.
Поэкспериментируйте с ними, чтобы понять как они работают.
В закладке Variables можете наблюдать за значением переменных.
Также можно подвести курсор к переменной и наблюдать в всплывающей подсказке ее значение
Если установить Breackpoint (меню Debug -> Todggle Breackpoint) на нужные строки в коде, во время выполнения программы дебаггер будет останавливаться на установленных Breackpoint-ах.
Теперь, после первого знакомства с IDE, можно перейти непосредственно к изучению микроконтроллера STM32F103 и написания своих программ.
Желаю успехов!
Смотри также:
- 1. STM32. Программирование STM32F103. Тестовая плата. Прошивка через последовательный порт и через ST-Link программатор
- 2. STM32. Программирование. IDE для STM32
- 3. STM32. Программирование STM32F103. GPIO
- 4. STM32. Программирование STM32F103. Тактирование
- 5. STM32. Программирование STM32F103. USART
- 6. STM32. Программирование STM32F103. NVIC
- 7. STM32. Программирование STM32F103. ADC
- 8. STM32. Программирование STM32F103. DMA
- 9. STM32. Программирование STM32F103. TIMER
- 10. STM32. Программирование STM32F103. TIMER. Захват сигнала
- 11. STM32. Программирование STM32F103. TIMER. Encoder
- 12. STM32. Программирование STM32F103. TIMER. PWM
- 13. STM32. Программирование STM32F103. EXTI
- 14. STM32. Программирование STM32F103. RTC
- 15. STM32. Программирование STM32F103. BKP
- 16. STM32. Программирование STM32F103. Flash
- 17. STM32. Программирование STM32F103. Watchdog
- 18. STM32. Программирование STM32F103. Remap
- 19. STM32. Программирование STM32F103. I2C Master
- 20. STM32. Программирование STM32F103. I2C Slave
- 21. STM32. Программирование STM32F103. USB
- 22. STM32. Программирование STM32F103. PWR
- 23. STM32. Программирование STM32F103. Option bytes
- 24. STM32. Программирование STM32F103. Bootloader
- STM32. Скачать примеры
- System Workbench for STM32 Установка на Ubuntu
- Keil uVision5 – IDE для STM32
- IAR Workbench – IDE для STM32
- Управление бесколлекторным двигателем постоянного тока (BLDC) с помощью STM32
- Управление PMSM с помощью STM32
Недавні записи
- Своя бібліотека для векторного керування безколекторними моторами
- Not Allowed
- Адаптивний ПІД регулятор
- Конструктор регуляторів моторів. Структура.
- Конструктор регуляторів моторів. Анонс.
- Golang + Vue + PostgreSQL #2
- Golang + Vue + SQLite #1
- FOC Position Control. Векторне управління - Стабілізація положення
- Flask & Vue. Завантаження файлів. Приклад № 2.10
- Рекуперація. FOC і цікаві досліди
Tags
gpio piezo hih-4000 bme280 mpu-6050 options watchdog capture led brushless foc docker wifi dc-dc flask tim gps mpu-9250 sms bldc java-script examples solar smd max1674 rfid ethernet raspberry-pi sensors usart lcd dht11 displays motor websocket timer flash pwm stm32 python bmp280 battery eb-500 web html css mongodb books git ssd1306 i2c dma exti atmega pmsm meteo avr mpx4115a remap eeprom encoder rs-232 soldering bluetooth esp8266 ngnix ssd1331 rtc bkp servo st-link programmator uart 3d-printer usb adc nvic nodemcu barometer
Архіви