Coocox coos + stm32vl-discovery. первый проект с многозадачной ос: мигаем светодиодами!
Содержание:
- Как запускал
- Перший запуск CooCox CoIDE
- Защита битов конфигурации GPIO
- Первая программа
- Связанные материалы
- Как настраивал
- Деякі налаштування IDE та параметри компілятора
- Некоторые настройки IDE и параметры компилятора
- Камрад, рассмотри датагорские рекомендации
- Дебаггер
- Перша програма
- Сброс и установка битов порта
- Режимы работы выводов GPIO
Как запускал
Пока что я не встречал такой среды разработки, которая бы начала работать с первого раза. «Кокосовый КоАйдер», как я его называю, тоже не был исключением (речь пойдет о версии 1.4.0, скачанной с официального сайта coocox.org). Первое, что нужно для его работы — компилятор. Да, я читал написанное красным на сайте (Before using CoIDE, you need to set GCC Toolchain first), но разве наш человек не попробует без предостережений? Проверил. Не работает. Ругается.
В той же ссылке, где выделено красным, скачал архив с GCC-компилятором
Распаковал (пожалуй, неважно куда, но я сделал папку в Program Files). В Кокосе открыл меню Project — Select Toolchain Path
Здесь, как оказалось, нужно указать не просто папку, куда был распакован архив, а папку с бинарными файлами (у меня — F:\Program Files\arm-2011.03-coocox\bin), где лежит в том числе и g++.exe. Еще можно причесать параметры компиляции (Project — Configuration), но попервах лучше этого не делать. Так, изменив параметр Optimization можно убить пустые циклы, а значит и программные задержки (проверил, чистая правда).
Перший запуск CooCox CoIDE
Перш за все треба налаштувати шлях до компілятора. Тиснемо в меню «Project», далі «Select Toolchain Path» в вікні, що відкрилось тиснемо «Browse» і вказуємо шлях до компілятора. Має бути щось схоже на такий шлях «C:\Program Files (x86)\GNU Tools ARM Embedded\4.8 2014q3\bin».
Створення нового проекту
Тепер достатньо натиснути «Create a New Project» відкриється вікно де введемо назву проекту, наприклад — «first program»:
Тиснемо «Next» і обираємо «Chip»:
Тиснемо»Next» і обираємо ST -> STM32100x -> STM32F100RB (чи як маєте інший мікроконтролер, то обираєте саме його) і «Finish»:
В CooCox CoIDE відкриється вкладка з репозиторієм де можна обрати потрібні для проекту бібліотеки. Обираємо «GPIO», разом з цією бібліотекою обираються пов’язані бібліотеки, такі як «CMSIS core», «CMSIS Boot», «RCC». Ліворуч у вкладці «Project» структура файлів нашого проекту:
У вкладці «Project» робимо мишкою подвійний клік на файлі 1- «main.c», в головному вікні з’явиться вкладка «main.c» — 2, поле де пишемо свою програму — 3, перелік назв наших змінних та процедур — 4.
Защита битов конфигурации GPIO
Для защиты битов в регистрах конфигурации от несанкционированной записи в STM32 предусмотрен регистр блокировки настроек GPIOx_LCKRGPIOx_LCKR — регистр блокировки настроек вывода порта:
Для защиты настроек отдельного вывода порта необходимо установить соответствующий бит LCKy. После чего осуществить последовательную запись в разряд LCKK значений «1” — «0” — «1” и две операции чтения регистра LCKR, которые в случае успешной блокировки дадут для бита LCKK значения «0” и «1” . Защита настроечных битов сохранит своё действие до очередной перезагрузки микроконтроллера.
Файл определений для периферии микроконтроллеров STM32 определяет отдельные группы регистров, объединённые общим функциональным назначением (в том числе и GPIO), как структуры языка Си, а сами регистры как элементы данной структуры. Например:
GPIOC->BSRR – регистр BSRR установки/сброса порта GPIOC.
Воспользуемся определениями из файла stm32f10x.h для иллюстрации работы с регистрами ввода-вывода микроконтроллера STM32F100RB установленного в стартовом наборе STM32VLDISCOVERY:
Первая программа
CooCox
Выполняем пункт меню Project -> New
Указываем имя проекта:
Выбираем Чип:
В репозитории выбираем какие именно модули мы будем использовать:
Открываем main.c і набираем следующий код программы:
Компилируем (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
Связанные материалы
Подарок ко Дню влюблённых на МК MSP430G2452 от Ti. Launchpad в действии…
Каждый, кто брался за изучение программирования микроконтроллеров, обычно начинает свой путь с…
Применение микроконтроллеров в звуковой технике. С. Р. Баширов, А. С. Баширов, Р. И. Авилов….
Применение микроконтроллеров в звуковой технике. С. Р. Баширов, А. С. Баширов, Р. И. Авилов….
Микроконтроллеры AVR в радиолюбительской практике. А. В. Белов…
А. В. Белов Микроконтроллеры AVR в радиолюбительской практике Данная книга представляет собой…
Программирование микроконтроллеров в AtmelStudio 6. Часть 1. Первые шаги…
Современное радиолюбительство невозможно представить без микроконтроллеров, и это очевидно. В…
Грызем микроконтроллеры. Урок 1….
Эту статью (а точнее цикл статей…) я решил полностью посвятить микроконтроллерам фирмы Atmel….
Проект DMX512. Микроконтроллер управляет профессиональным шоу. Ч.2…
Мой первый готовый проект DMX512 на 60 каналов. Нечто подобное можно найти в инете, но часто это…
Как делают динамики?…
Вы знаете, как делают динамики? Вот и я не знал. Но недавно мне прислали видео канала Discovery….
Аудио ЦАП DAC. Поделки начинающего цапостроителя. Часть 3. PCM1796, DIR9001, PCM2704, ADM485…
РСМ1796 — что это за зверь и с чем ее едят. Покорение новых горизонтов Иногда наступает момент,…
Програмирование в AVR Studio 5 с самого начала. Часть 1…
Каждый человек, который только начинает осваивать программирование микроконтроллеров, да и вообще…
«Часы-пропеллер» с эффектом стробоскопа на PIC16F84A. LED POV Clock…
Много диковинных электронных проектов можно найти на просторах Интернета, что и не даёт пытливому…
Вариант подключения датчиков и темброблок для гитары Gibson Les Paul и подобных…
Доброго времени суток, коллеги! Это моя первая статья, поэтому прошу строго не судить. Разумная…
Силовая электроника. От простого к сложному. Семенов Б.Ю. 2005…
Почитай, друг! Почерпнешь из этой книги что-нибудь интересное, новое, а может освежишь в памяти…
Как настраивал
При первом старте я выбрал библиотеки C Library, GPIO и RCC. Открыл пустой main.c и подумал: а с чего начать? На вкладке Components слева в глаза бросается пункт «GPIO (with 4 examples)». Замечательно. GPIO blink, куда ж без него. Скопировал весь код и всавил его в свой main.c вместо всего, что там есть. Не компилируется. Нет главной процедуры main. Конечно, нужно было бы добавить этот пример, а не копипастить, но лечится это легко: процедуру GPIO_Blink нужно переименовать на main.
F7. Проект скомпилирован. Ура! Пробую залить на плату. Ругается. Не работает.
Меню Debug — Debug Configuration. В дереве открываю Имя-проекта.configuration. Появляется страница со вкладками Debugger и Download. Здесь нужно выбрать правильный адаптер (у меня ST-Link), порт SWD. Закрываю. Зеленая кнопочка Download Code to Flash — и вот оно, счастье!
Отладка. При старте ругается на непонятный каталог Program — и тут я понимаю, что лучше было установить Кокос в каталог без пробелов, русских букв и вообще в C:/COOCOX/. Не смотря на 21-й век на дворе. Но ошибочка никоим образом на отладку не повлияла, и по программе можно смело шагать по F10/F11.
Деякі налаштування IDE та параметри компілятора
Repository
View -> Repository
Тут ми обираємо бібліотеки, які необхідні для нашого проекту. При цьому IDE копіює у папку stm_lib вашого проекту потрібні файли.
Закладка Compile
у цій закладці встановлюються ключі для компілятора. Ми сюди ще будемо повертатися, а поки що звернемо увагу на поле Optimization. Це поле задає параметр оптимізації для компілятора. Про оптимізацію буде окрема розмова, поки що Вам потрібно засвоїти, що оптимізація Optimizate Size (-Os) максимально зменшує об’єм скомпільованої програми. Але при цьому компілятор може викинути (оптимізувати) деякі операції, і ваша програма може працювати не так, як би Вам того хотілося. Тому, на перших етапах, я не рекомендую використовувати цей метод оптимізації. Встановіть Optimizate (-O1).
Закладка Link
У цій закладці поки що нас цікавить тільки поле Library та Linked Libraries. Якщо Ви будете використовувати стандартні бібліотеки С, наприклад бібліотеку математичних функцій math, Вам треба буде обрати «Use base C Library». Якщо цього не зробити, то компілятор видасть помилку.
Тут вказуються куди складати скомпільовані файли і у яких форматах.
Поки що в ній ми нічого робити не будемо.
Закладка Debugger
В цій закладці встановлюються параметри дебагера. Оскільки ми будемо використовувати ST-Link, тут нічого міняти не прийдеться.
Некоторые настройки IDE и параметры компилятора
Repository
View -> Repository
Здесь мы выбираем библиотеки, которые необходимы для нашего проекта. При этом IDE копирует в папку stm_lib вашего проекта нужные файлы.
Закладка Compile
в этой закладке устанавливаются ключи компилятора
Мы сюда еще будем возвращаться, а пока обратим внимание на поле Optimization. Это поле задает параметр оптимизации для компилятора
Об оптимизации будет отдельный разговор, пока Вам нужно усвоить, что оптимизация Optimizate Size (-Os) максимально уменьшает объем скомпилированных программ. Но при этом компилятор может выбросить (оптимизировать) некоторые операции, и программа может работать не так, как Вам бы хотелось. Поэтому, на первых этапах, я не рекомендую использовать этот метод оптимизации. Установите Optimizate (-O1).
Закладка Link
В этой закладке пока нас интересует только поле Library и Linked Libraries. Если Вы будете использовать стандартные библиотеки С, например библиотеку математических функций math Вам нужно будет выбрать «Use base C Library». Если этого не сделать, то компилятор выдаст ошибку.
Здесь указываются куда складывать скомпилированные файлы и в каких форматах.
Пока в ней мы ничего делать не будем.
Закладка Debugger
В этой закладке устанавливаются параметры дебаггера. Поскольку мы будем использовать ST-Link, здесь ничего менять не придется.
Камрад, рассмотри датагорские рекомендации
Внимание! 800 рублей для новичков на Aliexpress Регистрируйтесь по нашей ссылке. Если вы впервые на Aliexpress — получите 800.00₽ купонами на свой первый заказ.. Цифровой осциллограф DSO138
Кит для сборки
Цифровой осциллограф DSO138. Кит для сборки
Функциональный генератор. Кит для сборки
Настраиваемый держатель для удобной пайки печатных плат
Сергей (sergey_esp)
г. Красногоровка Донецкая обл.
Список всех статей
Профиль sergey_esp
Я радиолюбитель US8IHS, музыкант. Мне 36 лет. Электронникой увлекаюсь с 4-го класса школы. В электронике люблю радиолампы, микроконтроллеры и все что с ними связанно. Работать начал рано, сперва на кабельном телевидении, затем монтером и кабельщиком-спайщиком в связи. Затем работал инженером в частотнадзоре, ремонт терминалов GSM, проектировщиком звука и света для клубов, ресторанов, театров. В вольном предпринимательстве занимался системами видеонаблюдения.
Дебаггер
У Вас есть следующие кнопки для управления дебаггером.
Поэкспериментируйте с ними, чтобы понять как они работают.
В закладке 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
Перша програма
CooCox
Виконуємо пункт меню Project -> New
Вказуємо ім`я проекту:
Обираємо Чип:
З репозиторію обираємо, які саме модулі ми будемо використовувати:
Відкриваємо main.c і набираємо наступний текст програми:
Компілюємо (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
Сброс и установка битов порта
Для атомарного сброса и установки битов GPIO в микроконтроллерах STM32 предназначен регистр GPIOx_BSRR. Традиционный для архитектуры ARM способ управления битами регистров не требующий применения операции типа «чтение-модификация-запись” позволяет устанавливать и сбрасывать биты порта простой записью единицы в биты установки BS (BitSet) и сброса BR (BitReset) регистра BSRR. При этом запись в регистр нулевых битов не оказывает влияния на состояние соответствующих выводов.
GPIOx_BSRR – регистр сброса и установки битов порта:
Альтернативные функции GPIO и их переназначение (remapping)
Практически все внешние цепи специального назначения STM32 (включая выводы для подключения кварцевых резонаторов, JTAG/SWD и так далее) могут быть разрешены на соответствующих выводах микроконтроллера, либо отключены от них для возможности их использования в качестве выводов общего назначения. Выбор альтернативной функции вывода осуществляется при помощи регистров с префиксом «AFIO”_.
Помимо этого регистры AFIO_ позволяют выбирать несколько вариантов расположения специальных функций на выводах микроконтроллера. Это в частности относится к выводам коммуникационных интерфейсов, таймеров (регистры AFIO_MAPR), выводам внешних прерываний (регистры AFIO_EXTICR) и т. д.
Подробнее смотрите документы «Reference manual” на соответствующую подгруппу микроконтроллеров.
Режимы работы выводов GPIO
Режимы работы отдельных выводов определяются комбинацией битов MODEy и CNFy регистров GPIOx_CRL и GPIOx_CRH (здесь и далее: x-имя порта, y- номер бита порта).
GPIOx_CRL — регистр конфигурации выводов 0…7 порта x:
Структура регистра GPIOx_CRH аналогична структуре GPIOx_CRL и предназначена для управления режимами работы старших выводов порта (биты 8…15).
Биты MODEy указанных регистров определяют направление вывода и ограничение скорости переключения в режиме выхода:
- MODEy = 00: Режим входа (состояние после сброса);
- MODEy = 01: Режим выхода, максимальная скорость – 10МГц;
- MODEy = 10: Режим выхода, максимальная скорость – 2МГц;
- MODEy = 11: Режим выхода, максимальная скорость – 50МГц.
Биты CNF задают конфигурацию выходных каскадов соответствующих выводов:
в режиме входа:
- CNFy = 00: Аналоговый вход;
- CNFy = 01: Вход в третьем состоянии (состояние после сброса);
- CNFy = 10: Вход с притягивающим резистором pull-up (если PxODR=1) или pull-down (если PxODR=0);
- CNFy = 11: Зарезервировано.
в режиме выхода:
- CNFy = 00: Двухтактный выход общего назначения;
- CNFy = 01: Выход с открытым стоком общего назначения;
- CNFy = 10: Двухтактный выход с альтернативной функцией;
- CNFy = 11: Выход с открытым стоком с альтернативной функцией.
С целью повышения помехоустойчивости все входные буферы содержат в своём составе триггеры Шмидта. Часть выводов STM32, снабженных защитными диодами, соединёнными с общей шиной и шиной питания, помечены в datasheet как FT (5V tolerant) — совместимые с напряжением 5 вольт.