Микроконтроллеры STM8. Первая программа.

Микроконтроллеры STM8. Первая программа.
Здравствуйте,
Сегодня мы с вами поговорим об аппаратных средствах разработки для микроконтроллеров STM8S и создадим первый проект.
ST Logo
Для начала стоит определится с аппаратной платформой, потому что симулятор это хорошо, но, в любом случае, в итоге всё будет воплощено именно в железе. Для этого нам нужен программатор и отладочная плата. Как я уже упоминал в предыдущей статье, собрать самостоятельно программатор для STM8 – задача совершенно не простая, и требует серьезных знаний и больших усилий. В продаже присутвуют серьезные отладочные комплекты, наподобие STM8/128-EVAL, и универсальный программатор ST-Link, но, для быстрого старта ST выпустила два дешевых отладочных комплекта STM8S-Discovery и STM8L-Discovery. В них изначально встроена обрезанная версия ST-Link, и, таким образом, на одной плате мы получаем программатор и собственно целевой контроллер, готовый к программированию. И все это богатство стоит совершенно небольшие деньги: например, STM8S-Discovery достался мне за 115 грн. (около 14$). Разница между STM8S-Discovery и STM8L-Discovery состоит, кроме несущественных мелочей, в типе установленного контроллера, а также в том, что на STM8L-Discovery установлен энергосберегающий ЖК-индикатор. Первые шаги мы будем делать именно с использованием STM8S-Discovery, а потом соберем свою отладочную плату. Итак, что же у нас есть на этой замечательной платке?
STM8S-Discovery. Обзор платы.
С первого момента плата оставляет очень приятное впечатление. В комплект поставки ничего, кроме платы не входит, но это и не удивительно, учитывая цену. Плата упакована в пластиковую коробочку, знакомую многим по STM32VL-Discovery. Про кабель для связи с компьютером следует позаботится заранее – требуется самый обыкновенный A-B USB шнурок, каким, например, подключается принтер.
Глядя на плату, мы видим, что она разделена на две области – программатора и собственно отладочную плату. С платой стоит обращаться аккуратно, дабы не поломать ее на две части раньше времени.
Программатор работает по двухпроводному SWD-интерфейсу и позволяет прошивать не только встроенный контроллер, но и, при замыкании соответствующих перемычек, внешние устройства, чем мы в будущем непременно воспользуемся. Программатор работает со всеми семействами микроконтроллеров STM8, и ходят слухи, что скоро его взломают, и он сможет шить и STM32.
STM8S Discovery
На отладочной плате установлен микроконтроллер STM8S105C6T6, внешний кварц на 16 МГц, сенсорная кнопка и светодиод. На разъемы выведены все выводы микроконтроллера. Внизу платы находится небольшая макетная область с футпринтом для микросхем в корпусе SO 16 и небольшим количеством металлизированных отверстий.
Изначально в контроллер залита программа, которая позволяет касанием к сенсорной кнопке менять частоту мигания светодиода. Но к сенсорной кнопке мы вернемся намного позже, а сейчас создадим первую программу для STM8. Создание проекта для STM8 подобно созданию проектов в IAR для других платформ, но я повторюсь, чтобы не прерывать последовательность курса.

Создание первого проекта в IAR.

Запустим среду IAR Embedded Workbench for STMicroelectronics STM8. Текущая версия -1.20. После загрузки мы видим следующее окно:
IAR Main Window
Не стоит пренебрегать размещенными в основном окне программы на желтом фоне. Особенно важными являются разделы Getting Started и User Guides. В них содержатся масса полезной информации по самой среде разработки, а также гайды по Си, С++ и ассемблеру. В разделе Example Projects Капитан Очевидность разместил примеры проектов.
Создадим новый проект: идем в меню «Project», где выбираем пункт меню «Create new project…».
IAR New Project
В появившемся окошке выбираем шаблон для языка Си, после чего нам предлагают сохранить нашу рабочую область – Workspace, с расширением *.eww. Сохраняем, выскакивает окошко с запросом сохранения проекта, сохраняем и его. Проекты IAR имеют расширение *.ewp.
IAR New Project
Перед нами появилось такое окошко:
IAR New Project
Это шаблон пустого Си-файла. Сами шаблоны находятся в папке %Путь к IAR% IAR Systems\Embedded Workbench 6.0 Kickstart\stm8\config\template\project. Если у вас от проекта к проекту повторяются какие-то заготовки – можете создать свои шаблоны, и выбирать их при создании нового проекта.
Наберем следующий код, после чего сохраним проект:
#include "iostm8.h"      // подключение заголовочного файла с объявлениями регистров, масок и битов

int main( void )         // Основная программа
{
 
  PD_DDR_bit.DDR0 = 1;   // Ножка PD0 конфигурируется на вывод

  while(1)              // Бесконечный цикл
  {
        PD_ODR ^= MASK_PD_ODR_ODR0;   // Переключение уровня напряжения на ножке на противоположное
                                      // при помощи операции Исключающее ИЛИ (XOR)
  }

}

Программа короткая, каждая строка откомментирована, поэтому дополнительных объяснений я приводить не буду, если появятся вопросы – я отвечу на них в комментариях.
По умолчанию, наш код после компиляции будет запущен в симуляторе. Настроим наш проект для выполнения в железе. Для этого в окне workspace выберем пункт контекстного меню «Options», причем нажать правой кнопкой мыши нужно именно на самом проекте, а не на файлы, которые в него входят. Для достижения того же эффекта можно нажать Alt+F7.
IAR Project Options
На странице General, вкладке Target выберем модель нашего контроллера: STM8S — > STM8S105C6.
IAR Project Options
Выберем наш отладчик на странице Debugger, вкладке Setup: ST-Link.
IAR Project Options

Нажимаем Оk. Теперь самое время запустить нашу программу.
IAR Project Run
На основной панели инструментов нажимаем кнопку «Download and Debug» в виде зеленого треугольника, и если никаких проблем не возникло, о чем IAR не преминет нам сообщить, то наша программа будет записана в микроконтроллер и мы увидим следующее окошко:
IAR Project Run
Справа мы видим окошко дизассемблера, по центру – окно основной программы. Строка, подсвеченная зеленым, выполнится на следующем шаге. Пошагаем по программе при помощи кнопки «Step Over» (F10), и увидим, что светодиод на плате мигает.
IAR Project Run
Соответственно, программа работает правильно. Выйти из режима отладки можно нажав кнопку «Stop Debugging» в виде красного крестика.
IAR Project Run

На сегодня все, а в следующей статье мы подробнее рассмотрим порты ввода-вывода, а также Firmware Library для STM8.

Ссылки:
Раздел сайта STM, посвященный STM8S-DISCOVERY

Комментарии (37)

RSS свернуть / развернуть
Программатор работает со всеми семействами микроконтроллеров STM8, и ходят слухи, что скоро его взломают, и он сможет шить и STM32.
Актуальней обратное) STM32VL-Discovery уже у многих есть.
Кстати, а эту плату действительно можно ломать? У STM32VL-Discovery как минимум часть отладочной платы залазит на территорию ST-Link'а.
0
  • avatar
  • Vga
  • 08 марта 2011, 23:44
Завтра выложу фотки — там таким образом выфрезерована плата, что ее легко и удобно отламать, а программатор и отладочная плата полностью разделены.
0
Как я понял, у STM32VL-Discovery плату сломать нельзя. Плату STM8L-Discovery тоже нельзя сломать.
Заодно скажу, что STM8L-Discovery интересна тем, что на нее установлен 24-х сегментный LCD.
0
Да, льку не сломать, но там есть две перемыки убрав которые можно шить сторонний чип (я сейчас так и делаю).
Мне плата больше интересна не ради индикатора, а только потому что установленны контроллер мало потребляет.
32-ую то же нелья сломать, но у неё так же есть перемыки, вот только я не пробовал шить через неё, нужно быдет попоробовать у меня все три платы есть в наличии…
0
Насколько я вижу, STM32-ю плату ломать можно, но на выходе будет STLink и обломок платы с детальками, которые можно перенести в свою конструкцию.
0
спасибо, жду продолжения! Дискавери и пара камней лежат, но пока не дошли руки куда-нибудь пристроить
0
Продолжение буде сегодня-завтра. Все зависит от нагрузки — сегодня всё-таки рабочий день)
0
Мда… Все таки кризис сильно повлиял на Atmel — народ серьезно перебирается на другие МК… Или и правда время AVR прошло?
0
  • avatar
  • _YS_
  • 09 марта 2011, 19:35
Народ жаждет халявы! ST агрессивно лезет в эту нишу. А тут только один вид борьбы — ценовой.

А судя по IPO акции атмеля взлетели вверх очень сильно. Всем бы такие кризисы :))) Рост цен на процы только это показывает.
0
Так взлетели акции не за счет процессоров, а за счет памяти и тачскринов, вроде.
0
Ну за счет них, да.
0
Не получаеться залить прогу и отладить=(( В STVD + Resonans всё отлично работало, скачал ИАР 30-идневку, после нажатия «загрузить и отладить», загораеться красный светодиод на STM8S-DISCOVERY и выдает такие вот ошибки:

1. An error occurred while retrieving GDI features: gdi-error [40201]: Can't access configuration database
2. Couldn't find STM8S105C6 in the list of supported MCUs.
3. Failed to load debugee: D:\Users\Katbert\Desktop\STMicro\STM_8\IAR_Start\Debug\Exe\Pr_1.out

Ошибок в программе нету (построение без отладки и прошивки камня нормальное), настройки, как в статье все…
0
Попробуй IAR в другое место поставить, например C:\IAR_STM8\
0
Версия ИАР 1.20?
Я бы попробовал для начала переустановить ИАР.
0
IAR Embedded Workbench for STMicroelectronics STM8, Evaluation version, v. 1.30

Установлен на диск, на котором ОС — D:\

Ок, попробую.
0
Нет, не получилось… Поставил на диск С, на котром стоит другая ОСЬ (win7) из под этой же оси. Тот же результат. Однако всё получилось с XP, с первого раза запустилось, пошла отладка. Но блин, мне на win7 нужен ИАР.
0
Ура! У меня такая же проблема была. Не прошло и дня, как решил. Надо IAR из под администратора запускать)))
0
Спасибо. Я уж думал что:
CFG->GCR |= CFG_GCR_SWD; /*disable SWIM interface*/
поломало отладчик ))
+1
Че-то я не пойму, где в ИАР посмотреть размер кода после компиляции?
0
В логе, переключив уровень фильтрации на all. Правда тогда туда дохрена сыпется, включая команды.
0
А кто обьяснит или ткнет носом в " почитать", почему подключив светики с 1кОм для " поморгать" на PD все моргается, а на PB и PA нет (но светит). Осцила дома нету, непонятненько
0
  • avatar
  • ltvch
  • 11 сентября 2011, 16:13
Частично вопрос снят. Намудрил с инициализацией. Затрите вопросец )))
0
А почему на асме не пишется под stm? Как с объемом кода в отношении avr, не больше чем на ассемблере?
0
  • avatar
  • moon7
  • 14 октября 2011, 18:31
Потому что толку нет, можно и на Си писать.
0
Пишется потихоньку… Там ассемблер интересный, вернее организация внутренняя…
+1
В том то и проблема, что потехоньку. Я вижу смысл что бы написать быстро, а потом потихоньку оптимизировать по необходимости. А вот смысла писать любую мигалку светодиодом потихоньку — не наблюдаю.
0
есть ли ПО для программирования STM8 на Delphi?
0
  • avatar
  • titan
  • 28 октября 2011, 16:00
с портированной VCL :D
0
Имею платку stm8s-discovery, поставил IAR 1.3. Столкнулся со странной проблемой. Пункт меню «Project-Downoad and Debug» работает, а просто залить прошивку без дебага не получается, т.к. Project-Downoad-Download Active Application не активен
0
  • avatar
  • mcsa
  • 11 ноября 2011, 12:11
Дословный перевод из справки IAR'а: В случае если девайс не поддерживает команды механизма Flash загрузчика используемого в IAR Embedded Workbench, то данные пункты будут неактивны. Видимо остается пользовать только дебаг для заливки.
0
Дайте пожалуйста ссылку на нормальные драйвера для stm8s-disovery, система (семёрка) определяет программатор как «Unknown Device» и пишет ошибку «Это устройство было остановлено, поскольку оно сообщило о возникновении неполадок. (Код 43)», а IAR пишет «Wed Dec 21 11:40:56 2011: Failed to initialize communcation with hardware: SWIM error [30200]: ST-Link connection error
».
0
Подозреваю что плата косячная. попробуйте без дров на другой машине. Плата изначально определяется как съемный диск, на котором пара url'ек находится.
0
Не буду смотреть в сторону STM8 пока для них нет компилятора GCC.
0
Напишите сами, что вам стоит? за одно и другие спасибо скажут. :D
0
Пары лет жизни? )
0
не работает
0
У меня тоже не заработало сходу, в отладчике вывод честно менялся с 0 на 1 и обратно, а светодиод все не горел. Железо было свое, не STM-Dyscovery. После AVR и в голову не могло придти что надо настраивать что-то еще, а оказалось надо: в регистре CR1 указать что выход работает в режиме Push-pull. Т.е. для приведенного примера добавить
PD_CR1_bit.C10 = 1; // Выход типа Push-pull
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.