“Hello World!” в CooCox IDE для STM32

За традицією перша програма на будь якій мові програмування виводить повідомлення “Hello World!”, а в embedded  це мигання світлодіодом.  В цій статті я розповім як створити такий проект в середовищі CooCox IDE для мікроконтроллерів  STM32.

Існує кілька багато різних IDE для розробки програм для мікроконтроллерів. Найпопулярнішими є KEIL, IAR та CooCox IDE. Перші два платні, тому розглядається безплатне середовище програмування CooCox IDE. В ньому можна писати програму як на “С” так і на “С++” , працює з JTAG, має хорошу документацію та багато прикладів програм.

Для того щоб почати працювати з мікроконтроллером потрібне середовище  розробки (IDE) яке дозволяє писати та відлагоджувати програму на мові “С” або “С++” та плата з мікроконтроллером (може бути як від виробника, так і зібрана самотужки). Я використовую плату STM32F4DISCOVERY.

Ця плата зручна тим що на її роз’єми виведені всі виводи мікроконтроллера, є JTAG дебагер та програматор, а оскільки плата живиться від USB – не потрібний зовнішній блок живлення. Більше детально ви можете ознайомитись з характеристиками на офіційному сайті.

Встановлення та налаштування середовища розробки

  1. Переходимо на сайт: http://www1.coocox.org/index.html (саме на цей лінк, тому що тут www.coocox.org/ – розміщена бета версія програми),для завантаження потрібно зареєстуватись на сайті. Завантажуємо останню версію програми (на момент написання статті це CooCox CoIDE V1.7.8 ).
  2. Оскільки CooCox CoIDE не має інтегрованого компілятора, потрібно завантажити його. Переходимо на сайт CooCox, там вибираємо “Download:  GCC ARM Embedded“, відбудеться перехід на сторінку GNU Tools for ARM Embedded Processors де завантажуємо останню версію компілятора. (на момент написання статті це “gcc-arm-none-eabi-4_9-2014q4-20141203”).
  3. Встановлюємо компілятор, після цього заходимо Project – > Select Toolchain Path, та вказуємо шлях до компілятора:

 

Все налаштовано, можна починати створювати “Hello World!” для мікроконтроллера, буде використовуватись бібліотека SPL від виробника, яка інтегрована в середовище.

Створення проекту

1. Вибираємо папку для збереження проекту та даємо йому назву

2. Вибираємо “Chip”, оскільки не використвоємо інших бібліотек крім SPL

3. Вибираємо мікроконтроллер (на STM32F4 Discovery напаяний STM32F407VG)

4. Оскільки збираємось працювати з портами, активуємо бібліотеку GPIO, ця бібліотека при роботі звертається до інших бібліотек, тому вона їх автоматично додає в проект (виділені зеленим)

5. Так виглядає створений порожній проект

 

Створення програмного коду

Проект згеренований, можна починати писати код програми,але спочатку потрібно дізнатись як підключені світлодіоди до мікроконтроллера, для цього потрібна схема, яку можна завантажити тут. Із схеми видно що світлодіоди підключені до пінів PD12 .. PD15, цього достатньо для створення програми.

Для роботи з переферією потрібні бібліотеки, підключимо їх

Зробимо зручніші назви, такий підхід корисний якщо міняється схема, або код програми переноситься на інший тип мікроконтроллера, де порти і виводи відрізняються, щоб в разі потреби змінити програму в одному місці, а не шукати по всьому тексту.

Функція для ініціалізація порта до якого підключені світлодіоди. В бібліотеці SPL доступ до порта мікроконтроллера відбувається через структури, тому спочатку потрібно створити екземпляр структури, яку заповнюємо конфіграціними даними і передаємо в функцію ініціалізації.
Список цих параметрів можна знайти в файлі бібліотеки stm32f4xx_gpio.h.  Для роботи порта потрібно включити тактування, це робить функція RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

фунція затримки, яка дає можливість побачити мигання світлодіоду.

Влючення і виключення світлодіодів. Спочатку включається світлодіод LED4 і виключається LED5. Далі йде затримка, впродовж якої один світлодіод горить, інший виключений. Після цього LED4 виключається, а LED5 включається, затримка і далі процес повторюється.

Зібравши все разом отримаємо наступний код програми

Проект можна завантажити з Hithub.

Демонстрація роботи