Пятница, 29.03.2024, 15:52 Приветствую Вас Гость

Автозапуск за 1500р. на ЛЮБОЙ сигнализации?! -> at13.ru

Главная | Регистрация | Вход | RSS

Каталог статей


ARM-микроконтроллеры STM32F
.

Вариантов по сути дела было два — STM32F или NXP (LPC1xxx). На микроконтроллеры STM32F мой выбор пал по нескольким причинам.

Во-первых, дешёвая отладочная плата STM32VL-Discovery. Некоторые из вас, кто занимается электроникой, наверняка успели урвать халявную Discovery, бесплатно раздаваемую при участии в конкурсе от EBV-Electronik. Тем,  кто не успел подать заявку или вообще не знал о такой возможности, расстраиваться не стоит — плата стоит порядка 500 рублей. Цена более чем доступная.


Во-вторых, сами контроллеры довольно дешёвые. Простейший камень STM32F100C4T6 c 16 килобайтами на борту стоит меньше 40 рублей (!), при этом по характеристикам и периферии уделывает любую «Мегу», которая, кстати, всё равно стоит дороже. Цена на камни старшей линейки с аппаратным USB (STM32F103) тоже вполне гуманна, порядка 120 рублей.




В-третьих, контроллеры активно начинают набирать интерес у электронщиков, статьи по освоению STM32 появляются в интернетах одна за другой. Если так пойдет и дальше, популярность вполне может достигнуть уровня контроллеров Atmel.

Единственное по сравнению с тем же Atmel неудобство для радиолюбителя, это мелкий корпус. Про DIP можете забыть. Единственный доступный корпус — это LQFP с шагом ножек 0.5 мм. Тем не менее, плату при определенной сноровке изготовить ЛУТом не составит труда.

Пара слов об отладочной плате STM32VL-Discovery: на борту у неё программатор-отладчик ST-Link и отлаживаемый (target) контроллер STM32F100RBT6 (128 кб флеша, 8 кб оперативы). Все выводы разведены на штырьки, имеется два светодиода и кнопка. Разъём SWD отладчика выведен наружу, так что плату можно использовать и как обычный ST-Link. Это нам на руку, не понадобится покупать программатор.

Выбор среды разработки

Здесь не всё так однозначно, как с атмеловской AVR Studio. Вариантов несколько:
IAR. Коммерческая. Ограничение по объёму исполняемого кода. Нафиг.
Keil. То же самое. Нафиг.
Atollic TrueStudio. Основана на Eclipse, но, тем не менее, является коммерческой. В бесплатной Lite-версии ограничения по объёму кода нет, но регулярно выскакивает рекламка «Приобретайте версию PRO». Нафиг.
Чистый Eclipse с плагином ARM и компилятором ARM-GCC. Вроде вот оно, кроссплатформенное счастье, но откуда ни возьмись появляется еще более подходящая кандидатура:
CooCox IDE (CoIDE). Тоже основана на Eclipse, но бесплатна. Включает в себя всё для работы с ARM, позволяет не отходя от кассы докачивать необходимые библиотеки. Умеет работать с различнями отладчиками (правда не с ST-Link, но это обходится установкой GNU Debugger'a). Единственный минус — сборка есть только под винду. Линуксятникам придется ставить Eclipse и настраивать его руками. Как обычно. Ну да ничего, нам не привыкать.
Что ж, мой выбор сделан. Вы можете его оспорить, предложить писать в блокноте, компилировать мейкфайлами или вообще остановитесь на коммерческих решениях, выступив против священного GCC. Но лично я считаю CoIDE просто идеальной средой разработки, по крайней мере, для быстрого старта. Начните с неё. А там видно будет.

Итак, нам понадобятся:

Итак, нам понадобятся:
Плата STM32VL-Discovery
Утилита STM32 ST-Link Utility
Среда разработки CoIDE последней версии (на данный момент это 1.3.0).
Запускаем CoIDE. Нам любезно предлагают выбрать производителя контроллера, затем и сам чип. Выбираем STM32F100RBT6, именно он находится на Discovery. Далее мы видим страницу выбора подключаемых библиотек, которая и сыграла решающую роль при выборе среды разработки:



Здесь есть и библиотека CMSIS для ядра ARM Cortex M3, и STM32 Peripheral Library (библиотека для работы с периферией от ST Microelectronics), а так же собственные разработки CooCox для выбранного микроконтроллера. Нам достаточно лишь отметить галочкой требуемые библиотеки и дело в шляпе. Для простейшей светодиодной моргалки — а именно так выглядит «Hello World» на микроконтроллерах — нам понадобятся CMSIS Core, CMSIS Boot, RCC (управление тактированием периферии) и GPIO (управление портами ввода-вывода общего назначения).

Напишем код простейшей программы:

#include <stm32f10x.h>
#include <stm32f10x_conf.h>

#include <stm32f10x_rcc.h>
#include <stm32f10x_gpio.h>

void Delay(volatile uint32_t nCount) {
    for (; nCount != 0; nCount--);
}

int main(void) {
    /* SystemInit() вызывается из startup_stm32f10x_md_vl.c */

    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init( GPIOC , &GPIO_InitStructure);

    while (1) {
        GPIOC->ODR |= GPIO_ODR_ODR9;
        Delay(0x1FFFF);

        GPIOC->ODR &= ~GPIO_ODR_ODR9;
        Delay(0x7FFFF);
    }

    return 0;
}



Компилируем (F7), наблюдаем появившиеся в директории Debug исполняемые файлы — bin, hex, elf.


Прошивка контроллера

Программу мы подготовили, теперь займёмся её загрузкой в чип. Подключаем плату (об установке драйверов пояснять не стану), запускаем ST-Link Utility. Контроллер в Discovery подключен по SWD, поэтому первое, что надо сделать, это переключить режим работы программатора-отладчика с JTAG на SWD:




Далее всё прозрачно: меню Target -> Program & Verify… выбираем файл hex, жмём Program и прошивка завершена. Остается только нажать на плате Discovery кнопку Reset — ту, что с черным колпачком — и порадоваться моргающему светодиоду.




Поздравляю. Ваша первая программа написана, скомпилирована, прошита в чип и успешно работает. Начало положено, а далее дело за вами: лезем в шаблонный код, как обычно что-то изменяем, дополняем, изучаем новые периферийные устройства, подключаем новые библиотеки. И не забываем читать Reference Manual, в нём масса полезной информации.

Обновление: Начиная с версии 1.3.0 среда разработки CooCox IDE поддерживает ST-Link, поэтому программирование и отладку можно осуществлять прямо из CoIDE, без использования ST-Link Utility. Выбор адаптера через меню Debug -> Debug Configuration (ST-Link, порт SWD). Загрузка программы в контроллер через меню Flash -> Program Download.

Источник

Категория: Информация по МК, FAQ | Добавил: Advanced (07.05.2012)
Просмотров: 5982 | Теги: Микроконтроллеры, STM32 | Рейтинг: 5.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Источники питания и приборы
Охрана и контроль доступа
Измерительные устройства
Часы, таймеры, счетчики
Световые эффекты
Защита и контроль
Для начинающих
Разное
BASCOM AVR
Информация по МК, FAQ
Поиск
Вход на сайт
Наш опрос
Как отличить транзисторы КТ315 и КТ361 друг от друга
Всего ответов: 264
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
Друзья сайта