вторник, 21 июня 2011 г.

Демонстрационный урок

Дальнейшие действия описаны на сайте http://www.rapidstm32.com в качестве вводного урока.
Они относятся к варианту, когда имеется плата отличная от FiO STD, например, stm32vl или другая, на основе микроконтроллеров серии stm32F10xxx (возможно есть поддержка и других, не знаю).
В конечном результате с помощью стандартных блоков simulink и элементов библиотеки RapidSTM32 мы запрограммируем мигание двух светодиодов на плате.


Создание модели в MATLAB/Simulink
Открываем MATLAB и создаём новую модель в отдельной папке.
Открываем параметры конфигурации (Ctrl+E)


И изменяем настройки Workshop'а под наши нужды


В появившемся подменю Workshop'а выбираем под какую плату мы собираемся делать программу. В нашем случае это STM32VLDISCOVERY, в качестве неизменяемого параметра видим наш микроконтроллер STM32F100RB.


Если отладочная плата другая, то выбираем из вариантов Generic, и выбираем из списка установленный на плату микроконтроллер.


Приступаем к созданию самой модели. Если установка библиотеки RapidSTM32 прошла успешно, то в браузер библиотек должен появиться соответствующий пунки с необходимыми блоками.


Управление светодиодами будем осуществлять с помощью генераторов импульсных сигналов с различными периодами и скважностями.
Устанавливаем из библиотеки RapidSTM32 блок настройки Setup System Clocks & SysTick и блок цифрового выхода Digital Output.
Чтобы понять на какие выводы подавать сигнал для изменения состояния светодиодов, открываем описание платы. Находим, что два светодиода LED3 и LED4 доступны через порт C на 8 и 9 битах. 


Открываем настройки блока Digital Output и меняем настройки в соответствии с изложенным.


Добавляем два генератора прямоугольных сигналов из библиотеки Sources, и подключаем их к выводам C8 и C9. Изменяем параметры этих генераторов как угодно. Выставим у обоих скважность 2 а периоды 1 и 0.2 секунды.
Нажмём на кнопку Update diagram, расположенную на панели инструментов


В результате получаем следующее сообщение:


Оно сообщает нам, что ввиду того, что раз наша плата не была куплена за 100$ у производителя используемой библиотеки, то и полный функционал нам доступен не будет. Настройки блока Setup System Clocks & SysTick автоматически изменятся.


Данную операцию (обновления) необходимо провести дважды. На блоках параметр Ts должен стать отличным от 0.
Модель готова к тому, чтобы из графического вида перейти в C-код. Выбираем на панели инструментов пункт Tools --> Real-Time Workshop --> Build Model или (Ctrl-B). Блоки модели примут разные цвета (?разные цвета говорят о том, что блоки тактируются разными таймерами с наиболее подходящими частотами). Посмотреть эту зависимость можно по нажатию сочетания Ctrl-J. Можно поменять период генераторов и посмотреть изменения в данном окошке.


В результате последнего действия создались исходные файлы (*.с *.h *.s) для последующей их компиляции в hex-код и записи на память микропроцессора.




Сборка проекта из полученных файлов в Keil uVision4 и загрузка их на плату.
Открываем uVision и создаём новый проект (Project --> New uVision Project...).
Сохраняем проект в туже папку, где появились исходные файлы для проекта (папка с окончанием _rapidstm32).
В появившемся диалоговом окне выбираем наш микроконтроллер (в нашем случае STMicroelectronics -- >STM32F100RB).
На вопрос создания заготовочного кода, выбираем NO.
Добавляем в наш проект исходные файлы (*.c и *.s)


Открываем настройки проекта нажатием сочетния Alt-F7.
Выставляем параметры так же, как на следующих рисунках.




Билдим проект.


И проверяем в окне Build Output наличие строчки "project_name.axf" - 0 Error(s), 0 Warning(s).
Загружаем программу в флеш-память.


Запускаем отладку (Ctrl-F5) и нажимаем кнопу "RESET" на плате.
В итоге получаем следующую картину.

2 комментария:

  1. Molodez! Naschol, schto iskal davno!
    Estch-li vosmoschnostch ispolsovatch USB-interface i dlja obmena dannymi s compom?

    Jens

    ОтветитьУдалить
  2. Присоединяюсь к вопросу JensB. Интересует реализация PIL mode.
    Как раз в разгаре изучение STM32.

    С нетерпением жду следующих статей. Благодарю за отличный блог!

    ОтветитьУдалить