Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

На STM8 писать как для STM32 возможно?

Ср авг 10, 2022 16:03:25

Сразу признаюсь, что очень давно не писал на Си для МК и уже много забыл.
Ткните носом, кому не лень.

Вот есть у СТМ8 файл iostm8l001j3.h, который подключил вначале программы. Однако, в нем есть описания всех регистров и их битов.
Но запись в виде:
PB_DDR_bit.DDR6 = 1;
меня не устраивает.

Можно ли как-то правильно это поменять, чтобы писать что-то вроде:
GPIOB->CRH &= ~(GPIO_CRH_MODE12 | GPIO_CRH_CNF12);
?

Хочу, чтобы все было одинаково с СТМ32... :dont_know: :oops:

Добавлено after 1 minute 11 seconds:
Честно... опять забыл все про структуры... ( Вот они тжело мне даются.

Re: На STM8 писать как для STM32 возможно?

Ср авг 10, 2022 16:44:33

Если освежите в памяти, что такое "указатель на структуру", то конечно же поймете, что можно. Потому что запись GPIOB->CRH представляет собой обращение к элементу структуры GPIO_TypeDef через указатель на структуру, об этом говорит значок -> в отличие от символа точки . В свою очередь, GPIOB - это текстовая короткая запись указателя на структуру ((GPIO_TypeDef *) GPIOB_BASE), в которой GPIOB_BASE - есть ничто иное как числовой адрес группы регистров GPIOB, записанный через текстовые определения.

Re: На STM8 писать как для STM32 возможно?

Ср авг 10, 2022 18:04:40

Спасибо большое. ) Как раз про это и читаю. Снова и снова. Именно про указатели.

Добавлено after 10 minutes 53 seconds:
По разному у них эти хидеры организованы... Похоже на мой первый взгляд для СТМ8 написание можно превратить в нечто похожее для АВР8. Не переписывать же весь файл библиотеки.

Re: На STM8 писать как для STM32 возможно?

Ср авг 10, 2022 18:08:40

Не спорю, тема непростая, сам далеко не с первого раза понял.
Я с STM8 не работал, сразу на STM32 пересел, а плата Дискавери с STM8 так и осталась лежать нетронутой. Поэтому не знаю, как в STM8 там сделано. Но наверняка у порта есть аналогичный набор регистров. Нужно составить структуру этих регистров по порядку, с учетом их размерности, в том же виде, как сделано у STM32 со структурой GPIO_TypeDef, то есть создать новый тип данных в виде структуры посредством typedef struct. Затем нужно узнать из карты адресного пространства адрес первого регистра в этой группе и объявить указатель на этот адрес, причем тип указателя (его размерность) будет как раз типом структуры: #define GPIOB ((GPIO_TypeDef *) GPIOB_BASE), где GPIOB_BASE - записанный числом адрес первого регистра этой группы. После этого начнет работать запись в привычном для STM32 виде.

Да, а переписывать нужно мноооооого, весь заголовочник, в принципе то. Времени потратится немало.

Re: На STM8 писать как для STM32 возможно?

Ср авг 10, 2022 18:16:47

Можно, конечно, макросов наопределять, да и сделать структуры, как у STM32, но ведь под STM8 нет gcc, а есть лишь убогий sdcc, который вообще оптимизировать не умеет. Вот и приходится как-то так писать.

Re: На STM8 писать как для STM32 возможно?

Ср авг 10, 2022 18:22:14

Жаль, конечно... .ХОтелось бы от одного производителя, пусть и разные линейки микросхем, но с одинаковым подходом.... Было бы куда проще.

Re: На STM8 писать как для STM32 возможно?

Ср авг 10, 2022 19:21:08

Но это физически невозможно, т.к., к сожалению, а) для STM8 нет gcc, б) восьмибитка значительно ограничена в ресурсах, в) там и регистры совершенно иначе организованы.
P.S. Советую там у меня на гитхабе по ссылочке попастись, я там много чего успел на STM8 сделать, пока не плюнул и не решил полностью на STM32 перейти.
P.P.S. Кстати, а почему именно STM8? Ведь от него есть выгода лишь если делать огромную кучу изделий (да еще и на каком-нибудь S003, а то и S002), а для единичных поделок что STM32 за 70-200р, что STM8 за 45 и выше. Зато по способностям - просто море же разницы!

Re: На STM8 писать как для STM32 возможно?

Ср авг 10, 2022 22:36:44

почему именно STM8
ну вот мне на них проще. Они сами проще, и писать проще. Лицензию Cosmic пока выдаёт, его особенности известны... написав что-то для ST7/STM8 я могу дать гарантию и затрачу меньше времени, чем с ARM, так как чтобы дать гарантию с ARM мне надо изучить его, пролистывание же книжки по ядру М3 этим изучением не является...
Конечно, если речь о типовых задачах. Если же из 8 выжимать что-то на пределе в попытке конкурировать с 32 - то конечно, нафиг, проще бездумно сгенерировать проект в кодогенераторе да натыкать требуемого.
... а ещё у меня пока достаточно много ST7/STM8, это тоже причина, может, и у ТС тоже их сотня )

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 05:29:29

)) у меня их ровно 100 штук. Нужны для одного любопытного проектика. Как прототип.

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 19:38:48

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

Если я размещу двумерный массив, то он где разместиться во флеш или ОЗУ?

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 19:49:36

Если я размещу двумерный массив, то...

Если это массив переменных, то в ОЗУ. А если массив констант, то возможны варианты, но обычно во флеше.

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 20:03:37

Константы. однако, ИАР выдает ошибку, типа слишком много...

Вот такой мне надо:
Код:
unsigned char Letter[5][15] = {   0b0011, 0b1001, 0b1110, 0b1001, 0b0011, 0b0000, 0b0000, 0b0000, 0b0111, 0b0110, 0b0111, 0b1001, 0b0111, 0b1001, 0b0011,
                                  0b0101, 0b1001, 0b0001, 0b1010, 0b0101, 0b0000, 0b0000, 0b0000, 0b1000, 0b1001, 0b1000, 0b1001, 0b1000, 0b1010. 0b0101,
                                  0b1001, 0b1011, 0b0110, 0b1100, 0b1001, 0b0000, 0b1111, 0b0000, 0b1000, 0b1001, 0b1000, 0b1011, 0b1000, 0b1100, 0b1001,
                                  0b1001, 0b1101, 0b0001, 0b1010, 0b1111, 0b0000, 0b0000, 0b0000, 0b1000, 0b1001, 0b1000, 0b1101, 0b1000, 0b1010, 0b1111,
                                  0b1001, 0b1001, 0b1110, 0b1001, 0b1001, 0b0000, 0b0000, 0b0000, 0b0111, 0b0110, 0b0111, 0b1001, 0b0111, 0b1001, 0b1001 };


Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 20:09:00

типа слишком много...

Так посмотрите на адрес массива. Я же сказал, что есть варианты. Есть компиляторы, где константам для попадания во флеш требуется специальный квалификатор.

Добавлено after 2 minutes 37 seconds:
Вот такой мне надо:
Код:
unsigned char Letter[5][15] = {   

Прикольно.. А где квалификатор константы?
Должно быть
Код:
const unsigned char Letter[5][15] = {   

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 20:12:52

А вообще, не такой, наверное, разверну его по вертикали, т.к. проще выводить будет на светодиоды.. Но не принципиально. Будет одномерный массив, но с большим числом данных.

Аааа... спасибо. сейчас подправлю.

Добавлено after 2 minutes 55 seconds:
И еще, я не знаю как посмотреть адрес массива... Он же не компилирует

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 20:19:05

Он же не компилирует

Сначала нужно исправить все ошибки, естественно...
Диагностику приведите.

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 20:56:06

Я понял, что ему не нравится... Он не хочет, чтобы массив рвали. Т.е. каждый элемент после запятой перенесен на другую строку. Если все элементы в одну строку, то нормально....

Как так-то?! :dont_know:

И самый галвный вопрос, который сейчас интересен - как разместить массив данных во флеши у СТМ8?

Нет... Наврал... Не нравится ему запись в виде 0b00111,

Error[Pe253]: expected a "," C:\PR\IAR\First\main.c 11

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 21:13:04

Разберитесь поддерживает ли компилятор двочные литералы. Iar в этом плане строго стандарта придерживается, а двоичные литералы появились только в С++14. Появилась ли такая поддержка в С не помню, провеьте сами.

ЗЫ: Не путать с поддержкой двоичных констант компилятором GCC, она есть давно.

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 21:20:23

Блин...

Я вот всего второй день с этим микроконтроллером и ИАРом в том числе для него. И уже столько гемора. А рефренс на микроконтроллер показался очень простым. Почти нет никаких настроек. )))) Тут же запустил на частоте в 16 МГц, тут же помигал линейкой светодиодов. Решил дальше покопать с таймерами и сделать мигалку типа POV, чтобы буквы в воздухе пислала. И уперся в массив..... этих букв.

Добавлено after 1 minute 53 seconds:
В АВР можно было на Си писать так двоичные числа.

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 21:22:26

уперся в массив..... этих букв.

Если это буквы, то дефайнами приведите бинарные константы к удобочитаемому виду. При этом вместо бинарной формы определяйте шестнадцатиричную (HEX).

Re: На STM8 писать как для STM32 возможно?

Чт авг 11, 2022 21:31:51

Да.. уже начитался об этом... Можно еще хэдер создать с дефайнами (256 штук). )))
Короче, Си не понимает такого представления двоичного числа. А в АВР это значит тоже где-то в хэдерах было, просто я не обращал внимание. Понятно теперь, что надо все в шестнадцатиричные приводить.

Добавлено after 1 minute 37 seconds:
В том и прикол был, что эти буквы читаются именно как матрицы в двоичном коде. Там прям буквы видно глазами, которые будут выводится на матрицу по столбцам.
Ладно. Смирюсь пока с этим.
Ответить