Страница 27 из 130
Re: Программирование STM8
Добавлено: Чт май 07, 2015 23:06:27
a5021
MisHel64 писал(а):программатор отдельно но совместимый с этой платкой?
программатору все равно с чем совмещаться. главное, чтобы нужные ноги у камня были выведены. универсальный китайский stlink, купленный на али, у меня и с stm8 работает и с stm32. в том числе и на отладке.
глянул цены, за 170 руб нынче такой на али можно купить.
Re: Программирование STM8
Добавлено: Пн май 11, 2015 22:29:18
axillent
взялся освоить STM8
опыт есть только по AVR
установил STVD + cosmic
беру примеры с сайта ST типа ADC example - не компилируется
потому как у ST включается файл stm8s.h, а у космика таких нет
под какой компилятор ST делает свои примеры?
есть ли где описание библиотек cosmic?
чем STDV лучше чем IDEA от COSMIC?
Re: Программирование STM8
Добавлено: Вт май 12, 2015 02:45:39
a5021
Я бы посоветовал все же попробовать IAR вместо связки STVD + cosmic. И начинать лучше не с примеров от ST, а с учебных ресурсов, коих пруд-пруди.
Блога Марка Стивенса, например, где по stm8s много толковых материалов.
Re: Программирование STM8
Добавлено: Вт май 12, 2015 05:15:11
axillent
Спасибо за ссылку
Почему все же IAR? По возможностям отладки они одинаковы? У меня stlink/v2 оригинальный
Почитал вчера еще статьи, там для космика в примераз все равно stm8s.h
Это наверно тот который из st-шной библиотеки переферии?
Re: Программирование STM8
Добавлено: Вт май 12, 2015 12:36:06
a5021
Оригинальный стлинк и не оригинальный по функционалу слабо отличимы. Дешевый китайский клон делает апдейт прошивки с сайта st так же, как и оригинал.
По поводу космиков и иже с ними, тут еще стоит смотреть не только на техническую сторону, но и на идеологическую. Для STM8 это не будет иметь решающего значения, но после, наверняка, захочется покопаться и с STM32, а там у космика уже не так все радужно. Мало того, что ST переписала до полной несовместимости стандартные библиотеки с появлением STM32CubeMX, так последний про существование космиков вообще, похоже, ничего не знает. В то же время, IAR имеет полную поддержку и для STM8 и для STM32. Согласитесь, иметь одну среду для разработки под AVR, STM8, STM32, MSP430 и всяких прочих редкоземельных МК имеет больше плюсов, чем использование отдельного уникального тулчейна для каждого семейства.
Еще IAR для STM8 имеет очень удобные библиотеки для работы с битовыми полями. Настолько удобные, что это может считаться одним из решающих преимуществ перед всеми остальными средам разработки.
Re: Программирование STM8
Добавлено: Вт май 12, 2015 13:07:58
axillent
Спасибо за разъяснения
По возможностям отладки IAR равнозначен STVD?
Просто последний произвелен ST как и мой програматор, важно уточнит
Насчет одного фреймворка для stm8 и stm32 сильный аргумент
Тем более я уже обратил внимание на полное отличие семантики работы с перефирийными регистрами
У космика биты в регистрах вообще не описаны (iostm8sxxx.h)
У stm в их переферийно библиотеке как то иначе и все ругают
У iar по своему
Хотел stm32 на кейле делать, но теперь подумаю
Re: Программирование STM8
Добавлено: Вт май 12, 2015 15:14:38
a5021
Я не сравнивал STVD с IARом с точностью до миллиметра, но сама по себе отладка в IAR вполне на уровне. Спецификации на STLINK открытые, драйвера стандартные. Ничто не мешает стороннему софту использовать все фичи заложенные ST. А вот то, что сама ST к собственным средствам разработки относится с некоторой прохладцей -- это многие замечают.
Re: Программирование STM8
Добавлено: Вс май 17, 2015 07:44:22
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 - ограничение скорости отключено.
Re: Программирование STM8
Добавлено: Вс май 17, 2015 07:57:17
oleg110592
Re: Программирование STM8
Добавлено: Вс май 17, 2015 08:01:53
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 такое есть, но это на любителя.
Re: Программирование STM8
Добавлено: Вс май 17, 2015 08:08:03
GARMIN
Я уже год пользуюсь хедером, полученным от одного примера для STM8. Допиливаю его потихоньку. Там регистры указаны как поля структур, и есть удобный битовый доступ к I/O ножкам. Выкладываю его сюда для оборзения
https://drive.google.com/file/d/0B47R5o ... sp=sharing
P.S. Работаю напрямую с регистрами, никаких прокладок.
Re: Программирование STM8
Добавлено: Вс май 17, 2015 08:17:58
oleg110592
header stm8s.h действительно лежит в SPL (всю SPL тянуть к себе в проект не нужно).
C10 совершенно не понятно, с нормальным header и автодополнение в иар работает:

SPL тут:
http://www.st.com/web/en/catalog/tools/PF258009#
к стати подобные header используются в STM32 - удобно будет переходить
Re: Программирование STM8
Добавлено: Вс май 17, 2015 11:12:18
axillent
Немного запутался)
Есть хидеры самого IAR, есть SPL, есть третье стороны, с чем лучше работать?
Как включить автодополнение в IAR?
Re: Программирование STM8
Добавлено: Вс май 17, 2015 12:11:06
GARMIN
axillent писал(а):Немного запутался)
Есть хидеры самого IAR, есть SPL, есть третье стороны, с чем лучше работать?
Как включить автодополнение в IAR?
Какой хидер подключишь в проект, тот и будет работать. Посмотри содержание, попробуй понять, с каким тебе будет проще.
Автодополнение у меня работает после компиляции проекта (F7).
Re: Программирование STM8
Добавлено: Вс май 17, 2015 12:14:37
oleg110592
В SPL header от производителя микроконтроллеров, выбор очевиден.
В иаре набираю "GPIOD->" подсказка всплывает автоматом, ничего не включал

Принудительно включить - нажать CTRL+пробел
Re: Программирование STM8
Добавлено: Вс май 17, 2015 12:49:01
axillent
Спасибо за разъяснения
Что SPL от производителя это понятно, как STVD, но и тот и другой ругают
Что нужно из SPL копировать в папку проекта? Там есть отдельно хидеры и сишные файлы
Re: Программирование STM8
Добавлено: Вс май 17, 2015 13:08:06
oleg110592
только файлик stm8s.h
в main.c добавить: #include "stm8s.h"
Re: Программирование STM8
Добавлено: Вс май 17, 2015 14:41:24
a5021
oleg110592 писал(а):В SPL header от производителя микроконтроллеров, выбор очевиден.
Позволю себе не согласится. Работать с битовыми структурами заголовочных файлов от IAR удобнее и нагляднее.
Например, установка бита в регистре таймера с иаровскими заголовками будет выглядеть так:
используя заголовочный файл от производителя, писать придется так:
Еще хуже ситуация становится, если надо менять сразу несколько битов в середине регистра.
Иаровские заголовки:
стм-овские:
Код: Выделить всё
TIM1->SMCR &= ~TIM1_SMCR_TS;
TIM1->SMCR |= (5 << 4);
Причем, зная название определения, в случае иаровских заголовков я просто пишу туда значение. С стмовсими заголовками нужно смотреть по даташиту смещение, чтобы попасть значением туда.
В общем, имеющий глаза увидит, какой выбор очевиден. Для всех остальных ситуация не столь благостная. Руководствоваться штампами, что раз от производителя, значит лучшее, весьма неоднозначная практика.
2
axill: пользоваться записями вида TIM4_CR1_bit.OPM=1 немного коряво. Подключите заголовочный файл iostm8s103f3.h, где все битовые структуры имеют простые имена и ваша запись станет выглядеть, как TIM4_CR1_OPM = 1; Иаровские дифайны имеют четкое соответствие даташиту и если смекнуть, как они образуются, то часто можно и не лазить в заголовочный файл, а прямо из даташита на камень "угадывать" нужное опеределение для использования в коде.
Re: Программирование STM8
Добавлено: Вс май 17, 2015 15:28:36
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; - имхо нагляднее и переносимо в добавок
Re: Программирование STM8
Добавлено: Вс май 17, 2015 15:43:24
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
Это одна команда, причём можно менять поля по надобности.
В общем, как привык, так и пишешь.