Микроконтроллеры STM8. Первая программа.
Микроконтроллеры STM8. Первая программа.
Здравствуйте,
Сегодня мы с вами поговорим об аппаратных средствах разработки для микроконтроллеров STM8S и создадим первый проект.

Для начала стоит определится с аппаратной платформой, потому что симулятор это хорошо, но, в любом случае, в итоге всё будет воплощено именно в железе. Для этого нам нужен программатор и отладочная плата. Как я уже упоминал в предыдущей статье, собрать самостоятельно программатор для 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.

На отладочной плате установлен микроконтроллер STM8S105C6T6, внешний кварц на 16 МГц, сенсорная кнопка и светодиод. На разъемы выведены все выводы микроконтроллера. Внизу платы находится небольшая макетная область с футпринтом для микросхем в корпусе SO 16 и небольшим количеством металлизированных отверстий.
Изначально в контроллер залита программа, которая позволяет касанием к сенсорной кнопке менять частоту мигания светодиода. Но к сенсорной кнопке мы вернемся намного позже, а сейчас создадим первую программу для STM8. Создание проекта для STM8 подобно созданию проектов в IAR для других платформ, но я повторюсь, чтобы не прерывать последовательность курса.
Создание первого проекта в IAR.
Запустим среду IAR Embedded Workbench for STMicroelectronics STM8. Текущая версия -1.20. После загрузки мы видим следующее окно:

Не стоит пренебрегать размещенными в основном окне программы на желтом фоне. Особенно важными являются разделы Getting Started и User Guides. В них содержатся масса полезной информации по самой среде разработки, а также гайды по Си, С++ и ассемблеру. В разделе Example Projects Капитан Очевидность разместил примеры проектов.
Создадим новый проект: идем в меню «Project», где выбираем пункт меню «Create new project…».

В появившемся окошке выбираем шаблон для языка Си, после чего нам предлагают сохранить нашу рабочую область – Workspace, с расширением *.eww. Сохраняем, выскакивает окошко с запросом сохранения проекта, сохраняем и его. Проекты IAR имеют расширение *.ewp.

Перед нами появилось такое окошко:

Это шаблон пустого Си-файла. Сами шаблоны находятся в папке %Путь к IAR% IAR Systems\Embedded Workbench 6.0 Kickstart\stm8\config\template\project. Если у вас от проекта к проекту повторяются какие-то заготовки – можете создать свои шаблоны, и выбирать их при создании нового проекта.
Наберем следующий код, после чего сохраним проект:
Программа короткая, каждая строка откомментирована, поэтому дополнительных объяснений я приводить не буду, если появятся вопросы – я отвечу на них в комментариях.
По умолчанию, наш код после компиляции будет запущен в симуляторе. Настроим наш проект для выполнения в железе. Для этого в окне workspace выберем пункт контекстного меню «Options», причем нажать правой кнопкой мыши нужно именно на самом проекте, а не на файлы, которые в него входят. Для достижения того же эффекта можно нажать Alt+F7.

На странице General, вкладке Target выберем модель нашего контроллера: STM8S — > STM8S105C6.

Выберем наш отладчик на странице Debugger, вкладке Setup: ST-Link.

Нажимаем Оk. Теперь самое время запустить нашу программу.

На основной панели инструментов нажимаем кнопку «Download and Debug» в виде зеленого треугольника, и если никаких проблем не возникло, о чем IAR не преминет нам сообщить, то наша программа будет записана в микроконтроллер и мы увидим следующее окошко:

Справа мы видим окошко дизассемблера, по центру – окно основной программы. Строка, подсвеченная зеленым, выполнится на следующем шаге. Пошагаем по программе при помощи кнопки «Step Over» (F10), и увидим, что светодиод на плате мигает.

Соответственно, программа работает правильно. Выйти из режима отладки можно нажав кнопку «Stop Debugging» в виде красного крестика.

На сегодня все, а в следующей статье мы подробнее рассмотрим порты ввода-вывода, а также Firmware Library для STM8.
Ссылки:
Раздел сайта STM, посвященный STM8S-DISCOVERY
Здравствуйте,
Сегодня мы с вами поговорим об аппаратных средствах разработки для микроконтроллеров STM8S и создадим первый проект.

Для начала стоит определится с аппаратной платформой, потому что симулятор это хорошо, но, в любом случае, в итоге всё будет воплощено именно в железе. Для этого нам нужен программатор и отладочная плата. Как я уже упоминал в предыдущей статье, собрать самостоятельно программатор для 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.

На отладочной плате установлен микроконтроллер STM8S105C6T6, внешний кварц на 16 МГц, сенсорная кнопка и светодиод. На разъемы выведены все выводы микроконтроллера. Внизу платы находится небольшая макетная область с футпринтом для микросхем в корпусе SO 16 и небольшим количеством металлизированных отверстий.
Изначально в контроллер залита программа, которая позволяет касанием к сенсорной кнопке менять частоту мигания светодиода. Но к сенсорной кнопке мы вернемся намного позже, а сейчас создадим первую программу для STM8. Создание проекта для STM8 подобно созданию проектов в IAR для других платформ, но я повторюсь, чтобы не прерывать последовательность курса.
Создание первого проекта в IAR.
Запустим среду IAR Embedded Workbench for STMicroelectronics STM8. Текущая версия -1.20. После загрузки мы видим следующее окно:

Не стоит пренебрегать размещенными в основном окне программы на желтом фоне. Особенно важными являются разделы Getting Started и User Guides. В них содержатся масса полезной информации по самой среде разработки, а также гайды по Си, С++ и ассемблеру. В разделе Example Projects Капитан Очевидность разместил примеры проектов.
Создадим новый проект: идем в меню «Project», где выбираем пункт меню «Create new project…».

В появившемся окошке выбираем шаблон для языка Си, после чего нам предлагают сохранить нашу рабочую область – Workspace, с расширением *.eww. Сохраняем, выскакивает окошко с запросом сохранения проекта, сохраняем и его. Проекты IAR имеют расширение *.ewp.

Перед нами появилось такое окошко:

Это шаблон пустого Си-файла. Сами шаблоны находятся в папке %Путь к 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.

На странице General, вкладке Target выберем модель нашего контроллера: STM8S — > STM8S105C6.

Выберем наш отладчик на странице Debugger, вкладке Setup: ST-Link.

Нажимаем Оk. Теперь самое время запустить нашу программу.

На основной панели инструментов нажимаем кнопку «Download and Debug» в виде зеленого треугольника, и если никаких проблем не возникло, о чем IAR не преминет нам сообщить, то наша программа будет записана в микроконтроллер и мы увидим следующее окошко:

Справа мы видим окошко дизассемблера, по центру – окно основной программы. Строка, подсвеченная зеленым, выполнится на следующем шаге. Пошагаем по программе при помощи кнопки «Step Over» (F10), и увидим, что светодиод на плате мигает.

Соответственно, программа работает правильно. Выйти из режима отладки можно нажав кнопку «Stop Debugging» в виде красного крестика.

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

- +4
- 08 марта 2011, 22:19
- kalvenolt
Программатор работает со всеми семействами микроконтроллеров STM8, и ходят слухи, что скоро его взломают, и он сможет шить и STM32.Актуальней обратное) STM32VL-Discovery уже у многих есть.
Кстати, а эту плату действительно можно ломать? У STM32VL-Discovery как минимум часть отладочной платы залазит на территорию ST-Link'а.
Как я понял, у STM32VL-Discovery плату сломать нельзя. Плату STM8L-Discovery тоже нельзя сломать.
Заодно скажу, что STM8L-Discovery интересна тем, что на нее установлен 24-х сегментный LCD.
Заодно скажу, что STM8L-Discovery интересна тем, что на нее установлен 24-х сегментный LCD.
Да, льку не сломать, но там есть две перемыки убрав которые можно шить сторонний чип (я сейчас так и делаю).
Мне плата больше интересна не ради индикатора, а только потому что установленны контроллер мало потребляет.
32-ую то же нелья сломать, но у неё так же есть перемыки, вот только я не пробовал шить через неё, нужно быдет попоробовать у меня все три платы есть в наличии…
Мне плата больше интересна не ради индикатора, а только потому что установленны контроллер мало потребляет.
32-ую то же нелья сломать, но у неё так же есть перемыки, вот только я не пробовал шить через неё, нужно быдет попоробовать у меня все три платы есть в наличии…
спасибо, жду продолжения! Дискавери и пара камней лежат, но пока не дошли руки куда-нибудь пристроить
- marvin_yorke
- 09 марта 2011, 11:15
- ↓
Мда… Все таки кризис сильно повлиял на Atmel — народ серьезно перебирается на другие МК… Или и правда время AVR прошло?

Не получаеться залить прогу и отладить=(( В 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
Ошибок в программе нету (построение без отладки и прошивки камня нормальное), настройки, как в статье все…
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
Ошибок в программе нету (построение без отладки и прошивки камня нормальное), настройки, как в статье все…
А почему на асме не пишется под stm? Как с объемом кода в отношении avr, не больше чем на ассемблере?
Дайте пожалуйста ссылку на нормальные драйвера для 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 на 1 и обратно, а светодиод все не горел. Железо было свое, не STM-Dyscovery. После AVR и в голову не могло придти что надо настраивать что-то еще, а оказалось надо: в регистре CR1 указать что выход работает в режиме Push-pull. Т.е. для приведенного примера добавить
PD_CR1_bit.C10 = 1; // Выход типа Push-pull
Комментарии (37)
RSS свернуть / развернуть