Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

MisHel64 писал(а):программатор отдельно но совместимый с этой платкой?

программатору все равно с чем совмещаться. главное, чтобы нужные ноги у камня были выведены. универсальный китайский stlink, купленный на али, у меня и с stm8 работает и с stm32. в том числе и на отладке.

глянул цены, за 170 руб нынче такой на али можно купить.
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: Программирование STM8

Сообщение axillent »

взялся освоить STM8
опыт есть только по AVR

установил STVD + cosmic
беру примеры с сайта ST типа ADC example - не компилируется
потому как у ST включается файл stm8s.h, а у космика таких нет
под какой компилятор ST делает свои примеры?
есть ли где описание библиотек cosmic?
чем STDV лучше чем IDEA от COSMIC?
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Я бы посоветовал все же попробовать IAR вместо связки STVD + cosmic. И начинать лучше не с примеров от ST, а с учебных ресурсов, коих пруд-пруди. Блога Марка Стивенса, например, где по stm8s много толковых материалов.
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: Программирование STM8

Сообщение axillent »

Спасибо за ссылку
Почему все же IAR? По возможностям отладки они одинаковы? У меня stlink/v2 оригинальный

Почитал вчера еще статьи, там для космика в примераз все равно stm8s.h
Это наверно тот который из st-шной библиотеки переферии?
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Оригинальный стлинк и не оригинальный по функционалу слабо отличимы. Дешевый китайский клон делает апдейт прошивки с сайта st так же, как и оригинал.

По поводу космиков и иже с ними, тут еще стоит смотреть не только на техническую сторону, но и на идеологическую. Для STM8 это не будет иметь решающего значения, но после, наверняка, захочется покопаться и с STM32, а там у космика уже не так все радужно. Мало того, что ST переписала до полной несовместимости стандартные библиотеки с появлением STM32CubeMX, так последний про существование космиков вообще, похоже, ничего не знает. В то же время, IAR имеет полную поддержку и для STM8 и для STM32. Согласитесь, иметь одну среду для разработки под AVR, STM8, STM32, MSP430 и всяких прочих редкоземельных МК имеет больше плюсов, чем использование отдельного уникального тулчейна для каждого семейства.

Еще IAR для STM8 имеет очень удобные библиотеки для работы с битовыми полями. Настолько удобные, что это может считаться одним из решающих преимуществ перед всеми остальными средам разработки.
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: Программирование STM8

Сообщение axillent »

Спасибо за разъяснения
По возможностям отладки IAR равнозначен STVD?
Просто последний произвелен ST как и мой програматор, важно уточнит

Насчет одного фреймворка для stm8 и stm32 сильный аргумент
Тем более я уже обратил внимание на полное отличие семантики работы с перефирийными регистрами
У космика биты в регистрах вообще не описаны (iostm8sxxx.h)
У stm в их переферийно библиотеке как то иначе и все ругают
У iar по своему
Хотел stm32 на кейле делать, но теперь подумаю
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Я не сравнивал STVD с IARом с точностью до миллиметра, но сама по себе отладка в IAR вполне на уровне. Спецификации на STLINK открытые, драйвера стандартные. Ничто не мешает стороннему софту использовать все фичи заложенные ST. А вот то, что сама ST к собственным средствам разработки относится с некоторой прохладцей -- это многие замечают.
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: Программирование STM8

Сообщение axillent »

получилось у меня замигать светодиодом на STM8S103F3P6
сделал платку TSOP-DIP для втыкания в макетку и кроме МК напаял туда два конденсатора на VDD и VCAP и разъем для STLINK

сделал как рекомендовали на IAR
теперь возникает вопрос - где найти описание регистров и бит STM8 для IAR?
откуда все эти мнемоники как в примере ниже?

Код: Выделить всё

     TIM4_PSCR=0x07; //Предделитель на 2^7=128   16000000/128 = 125000 Hz
     TIM4_CR1_bit.OPM=1; //Разрешаем остановку счетчика по переполнению


понимаю что названия регистров надо смотреть в RM0016 от STM, но вот с обращениям к битам и их названиям как то все выглядит запутанно

в частности здесь ниже я не понял что такое C10 и C20

Код: Выделить всё

     PD_CR1_bit.C10=0; //PD0 - открытый сток.
     PD_CR2_bit.C20=0; //PD0 - ограничение скорости отключено.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

подключаю header от производителя - все по RM
http://stm32-spl-doc-online.esy.es/STM8 ... ource.html
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7357
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Программирование STM8

Сообщение uldemir »

Эти регистры появятся понятными для компилятора, когда будет приделан файл хедеров типа "#include "iostm8s103f3.h" - там они все расписаны и определены.

Конкретно C10 определен тут:

Код: Выделить всё

typedef struct
{
  unsigned char C10         : 1;
  unsigned char C11         : 1;
  unsigned char C12         : 1;
  unsigned char C13         : 1;
  unsigned char C14         : 1;
  unsigned char C15         : 1;
  unsigned char C16         : 1;
  unsigned char C17         : 1;
} __BITS_PD_CR1;
#endif
__IO_REG8_BIT(PD_CR1,      0x5012, __READ_WRITE, __BITS_PD_CR1);
С20 там же чуть дальше.

Правда, многие считают, что это не самое удобное определение регистров. У других это сделано через указатели на структуры типа PD->CR1 |= ~(C10). Но для этого нужны другие хедеры, а где их брать - не знаю. Говорят, в SPL такое есть, но это на любителя.
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 952
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

Re: Программирование STM8

Сообщение GARMIN »

Я уже год пользуюсь хедером, полученным от одного примера для STM8. Допиливаю его потихоньку. Там регистры указаны как поля структур, и есть удобный битовый доступ к I/O ножкам. Выкладываю его сюда для оборзения :)
https://drive.google.com/file/d/0B47R5o ... sp=sharing
P.S. Работаю напрямую с регистрами, никаких прокладок.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

header stm8s.h действительно лежит в SPL (всю SPL тянуть к себе в проект не нужно).
C10 совершенно не понятно, с нормальным header и автодополнение в иар работает:
Изображение
SPL тут:
http://www.st.com/web/en/catalog/tools/PF258009#
к стати подобные header используются в STM32 - удобно будет переходить
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: Программирование STM8

Сообщение axillent »

Немного запутался)
Есть хидеры самого IAR, есть SPL, есть третье стороны, с чем лучше работать?

Как включить автодополнение в IAR?
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 952
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

Re: Программирование STM8

Сообщение GARMIN »

axillent писал(а):Немного запутался)
Есть хидеры самого IAR, есть SPL, есть третье стороны, с чем лучше работать?

Как включить автодополнение в IAR?

Какой хидер подключишь в проект, тот и будет работать. Посмотри содержание, попробуй понять, с каким тебе будет проще.
Автодополнение у меня работает после компиляции проекта (F7).
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

В SPL header от производителя микроконтроллеров, выбор очевиден.
В иаре набираю "GPIOD->" подсказка всплывает автоматом, ничего не включал
Изображение
Принудительно включить - нажать CTRL+пробел
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: Программирование STM8

Сообщение axillent »

Спасибо за разъяснения
Что SPL от производителя это понятно, как STVD, но и тот и другой ругают

Что нужно из SPL копировать в папку проекта? Там есть отдельно хидеры и сишные файлы
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

только файлик stm8s.h
в main.c добавить: #include "stm8s.h"
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

oleg110592 писал(а):В SPL header от производителя микроконтроллеров, выбор очевиден.

Позволю себе не согласится. Работать с битовыми структурами заголовочных файлов от IAR удобнее и нагляднее.
Например, установка бита в регистре таймера с иаровскими заголовками будет выглядеть так:

Код: Выделить всё

TIM2_CR1_OPM = 1;

используя заголовочный файл от производителя, писать придется так:

Код: Выделить всё

TIM2->CR1 |= TIM2_CR1_OPM;

Еще хуже ситуация становится, если надо менять сразу несколько битов в середине регистра.
Иаровские заголовки:

Код: Выделить всё

TIM1_SMCR_TS = 5;

стм-овские:

Код: Выделить всё

TIM1->SMCR &= ~TIM1_SMCR_TS;
TIM1->SMCR |= (5 << 4);

Причем, зная название определения, в случае иаровских заголовков я просто пишу туда значение. С стмовсими заголовками нужно смотреть по даташиту смещение, чтобы попасть значением туда.
В общем, имеющий глаза увидит, какой выбор очевиден. Для всех остальных ситуация не столь благостная. Руководствоваться штампами, что раз от производителя, значит лучшее, весьма неоднозначная практика.

2 axill: пользоваться записями вида TIM4_CR1_bit.OPM=1 немного коряво. Подключите заголовочный файл iostm8s103f3.h, где все битовые структуры имеют простые имена и ваша запись станет выглядеть, как TIM4_CR1_OPM = 1; Иаровские дифайны имеют четкое соответствие даташиту и если смекнуть, как они образуются, то часто можно и не лазить в заголовочный файл, а прямо из даташита на камень "угадывать" нужное опеределение для использования в коде.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

а если использовать не IAR, а например SDCC для STM8, тоже использовать хидер от IAR?
В stm8s.h есть #ifdef _RAISONANCE, #ifdef _COSMIC для SDCC народ уже добавил...
Файл stm8s.h всегда доступен на сайте производителя и в наличии всегда свежая версия.
В IAR хидерах почему то до сих пор брешь в векторах:

Код: Выделить всё

/*----------
 *      Interrupt vector numbers
 *----------*/
#define AWU_vector                           0x03
#define SPI_TXE_vector                       0x0C
#define SPI_RXNE_vector                      0x0C
#define SPI_WKUP_vector                      0x0C

Где вектора EXTI и пр.?
Забавно что в примерах IAR присутствует #include "stm8s.h".
TIM4_CR1_OPM = 1;, а если написать TIM4_CR1_OPM = 100500; что будет? А STM32 и STM8 выглядит как именно установка бита: TIM4->CR1 |= TIM_CR1_OPM; - имхо нагляднее и переносимо в добавок
Последний раз редактировалось oleg110592 Вс май 17, 2015 15:46:45, всего редактировалось 1 раз.
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 952
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

Re: Программирование STM8

Сообщение GARMIN »

А я добавлю, что со структурами гораздо проще конфигурировать регистры. Это получается в одну команду вместо побитовой установки.
Например:

Код: Выделить всё

   TIM1->IER = TIM1_IER_BIE      * 0
            | TIM1_IER_TIE      * 0
            | TIM1_IER_COMIE   * 0
            | TIM1_IER_CC4IE   * 0
            | TIM1_IER_CC3IE   * 0
            | TIM1_IER_CC2IE   * 0
            | TIM1_IER_CC1IE   * 0
            | TIM1_IER_UIE       * 1;   // разрешить прерывания при переполнении для запуска данных по SPI

Это одна команда, причём можно менять поля по надобности.
В общем, как привык, так и пишешь.
Ответить

Вернуться в «Разные вопросы по МК»