2. STM32. Програмування. IDE для STM32
2. STM32. Программирование. IDE для STM32
(на русском языке)
Я зупинився на CooCox CoIDE та GCC. По-перше цей софт не коштує грошей, по-друге - з ним не виникло ніяких питань. Встановив і почав робити. Щоправда CooCox зроблений тільки під Windows. Це не зовсім добре. І хоча на Ubuntu CooCox і працює під wine і навіть компіляція проходить вдало, з дебагером проблема. Та й робота через wine - це не true way. Якось я напишу, як налаштувати IDE для STM32 під Ubuntu.
А тим часом...
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
Вказуємо ім`я проекту:
Обираємо Чип:
З репозиторію обираємо, які саме модулі ми будемо використовувати:
Відкриваємо 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. Тестова плата. Прошивка через UART та через 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
Доведеться користуватися зв`язкою STM32CubeMX та System Workbench for STM32 IDE.
PS Скріншот для "Закладка Debugger" додайте будь ласка. А то зараз двічі скрін з закладкою Download.
while (1)
{
/* Toggle LED which connected to PC13*/
GPIOC->ODR ^= GPIO_Pin_13;
/* delay */
for(i=0;i<0x100000;i++);
}
Результат, здається той же.
До якоїсь зі статей бачив комент про можливу статтю Бутлоадер. Є питання/пропозиція - бутлоадер для програмування мікроконтроллера через рідний USB, якщо таке взагалі можливо реалізувати.
Додати коментар
Недавні записи
- 🇺🇦 FOC Board STM32F103RB 🧩
- STM32 Motor control SDK - керування оборотами мотора за допомогою потенціометра 📑
- Flask✙Gunicorn✙Nginx➭😎
- STM32 Motor control SDK - програмне керування обертам мотора
- STM32 Motor control SDK - як створити перший проект
- Vue SVG. Приклад побудови живого параметричного креслення
- Вимірювання моменту мотора
- Vue SVG - компонент. Приклад 📑
- Flask + Vue 🏁 Финальный пример 🏁
- Flask, CORS, JSON-файл. Пример#6
Tags
bldc brushless stm32 motor web html css flask atmega foc git java-script pmsm raspberry-pi python websocket mongodb esp8266 nodemcu st-link tim timer docker ngnix programmator ssd1331 ssd1306 wifi uart meteo bme280 bmp280 i2c gps mpu-6050 mpu-9250 sensors 3d-printer options usb barometer remap watchdog flash eeprom rtc bkp encoder pwm servo capture examples dma adc nvic usart gpio books battery dc-dc sms max1674 avr lcd dht11 piezo rs-232 rfid solar exti bluetooth eb-500 displays ethernet led smd soldering mpx4115a hih-4000
Архіви