STM32 новичку в ARM что к чему
dosikus, нравится Вам изучать работу с периферией по RTE драйверам CMSIS, написанными теми же индусами - пожалуйста. Мазохизм не запрещен)))
- Реклама
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
ПростоНуб, зачем ковыряться в индусокоде SPL или кала, если есть сниппеты? Они, понятное дело, только под STM32F0, но путем несложного чтения даташита и мануала можно под нужную линейку переделать.
И хватит уже путать SMSIS и кал! Базовый SMSIS — просто набор хидеров для ARM'яней! Для поддержки конкретных камней нужно откуда-нибудь (хоть из того же SPL) выдрать заголовочные файлы с определениями регистров. Здесь у меня можно увидеть, что я именно так и поступил: заголовочные файлы под конкретные камни выдрал из SPL, добавив туда заголовочники для определенных линеек и базовые макросы для ногодрыга.
Ах, да: забыл еще про стартап (который был выдран из opencm3 и малость подправлен) и ld-скрипт (оттуда же, но тоже иной раз приходится новые секции добавлять для возможности эмуляции EEPROM во флеш-памяти).
И хватит уже путать SMSIS и кал! Базовый SMSIS — просто набор хидеров для ARM'яней! Для поддержки конкретных камней нужно откуда-нибудь (хоть из того же SPL) выдрать заголовочные файлы с определениями регистров. Здесь у меня можно увидеть, что я именно так и поступил: заголовочные файлы под конкретные камни выдрал из SPL, добавив туда заголовочники для определенных линеек и базовые макросы для ногодрыга.
Ах, да: забыл еще про стартап (который был выдран из opencm3 и малость подправлен) и ld-скрипт (оттуда же, но тоже иной раз приходится новые секции добавлять для возможности эмуляции EEPROM во флеш-памяти).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704833#p3704833"]dosikus, нравится Вам изучать работу с периферией по RTE драйверам CMSIS, написанными теми же индусами - пожалуйста. Мазохизм не запрещен)))[/uquote]
Ну во первых изучать работу периферии по чьей-то писанине , само по себе полный бред.
Это прерогатива выходцев с ПС кодинга.
Периферия изучается по документации производителя....
Кстати RTE драйвера это блажь кайло чисто...
А CMSIS это и не драйвера и не либа, это стандарт для писателей дров. Ощутите разницу...
Ну во первых изучать работу периферии по чьей-то писанине , само по себе полный бред.
Это прерогатива выходцев с ПС кодинга.
Периферия изучается по документации производителя....
Кстати RTE драйвера это блажь кайло чисто...
А CMSIS это и не драйвера и не либа, это стандарт для писателей дров. Ощутите разницу...
Последний раз редактировалось dosikus Сб сен 21, 2019 18:48:38, всего редактировалось 1 раз.
Eddy_Em, поясните связь между RTE драйверами CMSIS и HAL. И изучать МК переделевыя то, что написано для одного МК под другой - это уже практика, до которой и следует разобрать теорию на примерах. А у Вас какой-то замкнутый круг получается: сначала переделать, а потом изучать )))
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
ПростоНуб, у вас каша в голове.
CMSIS это стандарт описания работы с периферией.
RTE это либы и прерогатива кайла.
То что вы называете практикой - повсеместно -глупое тырканье с такими же глупыми ошибками и вопросами.
Если индивидиум не знает периферии он и в спл и калокубе будет только тыкаться ...
CMSIS это стандарт описания работы с периферией.
RTE это либы и прерогатива кайла.
То что вы называете практикой - повсеместно -глупое тырканье с такими же глупыми ошибками и вопросами.
Если индивидиум не знает периферии он и в спл и калокубе будет только тыкаться ...
- Реклама
dosikus, простите, но каша в голове у Вас. Почитайте внимательно, что входит в состав CMSIS. Там далеко не только CMSIS-Core. На данный момент обсуждается Driver компонент, который по утверждению многих, чем то лучше в CMSIS, чем в SPL для STM32. Для конкретики я рассматриваю STM32F10x. И вижу в CMSIS только два варианта драйверов. Один когруэнтный SPL, а второй - RTE. Так о каких драйверах тогда речь?
А обсуждать различие заголовочных файлов в CMSIS и SPL вообще бессмысленно, так как SPL пользуется заголовочными файлами CMSIS
А обсуждать различие заголовочных файлов в CMSIS и SPL вообще бессмысленно, так как SPL пользуется заголовочными файлами CMSIS
- Сообщения: 7004
- Зарегистрирован: Сб янв 28, 2006 22:47:24
Прошу прощения, что влезаю в вашу дискуссию в теме "STM32 новичку...", но все рискну задать вопрос - что такое SPL и HAL? Высокоуровневые библиотеки какие-то? Что такое CMSIS? Нет, я вижу этот CMSIS в настройках проекта Keil, даже галочки ставил-снимал во вкладке с ним, следуя найденным в интернете инструкциям к проектам типа "hello world". Но все равно не понимаю, что он и для чего. А он для чего-то нужен, раз вокруг него (и SPL с HAL) столько страстей разгорелось.
Астролябия-сама меряет, было бы что мерять!!!
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
- Сообщения: 7004
- Зарегистрирован: Сб янв 28, 2006 22:47:24
Гугль из первых строк поиска ведет на три такие же дискуссии: здесь, на изиэлектроникс и на казусе (и участники холивара везде почти те же). Плюс на хабрахабр, который я принципиально не читаю.
Так-то понятно, что это все либы, но в чем разница между ними? Ведь приверженцы тех и других за что-то бьются в спорах, значит разница есть, и немалая.
Я так подумал - если тут присутствующим не лень который день ругаться за либы, чиркнуть пару-тройку строчек для кратчайшей их характеризации тем более не составит труда для них.
Вот чего нашел тут https://www.drive2.ru/b/2253235/
Так-то понятно, что это все либы, но в чем разница между ними? Ведь приверженцы тех и других за что-то бьются в спорах, значит разница есть, и немалая.
Я так подумал - если тут присутствующим не лень который день ругаться за либы, чиркнуть пару-тройку строчек для кратчайшей их характеризации тем более не составит труда для них.
Вот чего нашел тут https://www.drive2.ru/b/2253235/
То что написано в пункте 3 актуально на сегодняшний день? Там где про примеры и описание либы HAL.1)CMSIS — это стандартная библиотека для кортексов. То есть это стандарт. С помощью этой библиотеки мы можем писать наши программы — но только с прямой записью в регистры. Это самый профессиональный способ написания программ, и кстати самый правильный, но сложный, так как придётся от а до я учить даташиты, постоянно сидеть с открытыми доками на процессор чтобы найти куда записать тот или иной бит в регистры.
2)SPL -Standard Peripherals Library — это попытка ST Electronics выпустить одну общую библиотеку для объединения всех своих процессоров. ЧТобы было проще переносить код и т.д и т.п. Работать проще как для начинающего, но всё равно всё вбиваем ручками — Никакой Автоматики!
3)HAL — Hardware Acess Level — это вторая попытка ST Electronics выпустить единую библиотеку для разработки. Заодно с ней вышла и программа CubeMX для настройки всего этого хозяйства.Всё гладко и хорошо по началау, но только по началу — дальше всё, приехали — ни примеров, ни обзоров. Поэтому пока не исследуют эту библиотеку вдоль и поперёк- делов не будет)))
То есть смысл в том что SPL уже вдоль и поперёк всю распилили и изучили. Поэтому, хочешь не хочешь а учить нужно. И вообще нужно стремиться к CMSIS. Но это уже кому захочется))
Астролябия-сама меряет, было бы что мерять!!!
Нет, не актуально. Вместе с новыми выпусками библиотек идёт достаточный набор примеров. В основном, для HAL, но есть и для LL.
Кстати, если не ограничиваться только Ъ CMSIS, то сегодня вместо заброшенного SPL, возможно, более предпочтителен вариант использовать LL. Причём, есть две опции - 1) пользоваться только заголовочными файлами, в которых по сути просто больше полезных макросов, расширяющих CMSIS-овские, и много встраиваемых (inline) функций, более читабельных, чем прямые игры с регистрами в стиле CMSIS, и 2) пользоваться ещё и .c файлами (USE_FULL_LL_DRIVER - вроде так).
CubeMX умеет генерировать код как и для HAL, так и для LL.
Кстати, если не ограничиваться только Ъ CMSIS, то сегодня вместо заброшенного SPL, возможно, более предпочтителен вариант использовать LL. Причём, есть две опции - 1) пользоваться только заголовочными файлами, в которых по сути просто больше полезных макросов, расширяющих CMSIS-овские, и много встраиваемых (inline) функций, более читабельных, чем прямые игры с регистрами в стиле CMSIS, и 2) пользоваться ещё и .c файлами (USE_FULL_LL_DRIVER - вроде так).
CubeMX умеет генерировать код как и для HAL, так и для LL.
- Сообщения: 7004
- Зарегистрирован: Сб янв 28, 2006 22:47:24
[uquote="WiseLord",url="/forum/viewtopic.php?p=3705021#p3705021"]более предпочтителен вариант использовать LL[/uquote]
Ее можно использовать в Keil? Или куб обязателен?
Ее можно использовать в Keil? Или куб обязателен?
Астролябия-сама меряет, было бы что мерять!!!
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Asmodey, периферия настолько гибкая и весьма универсальная, что ее не охватит ни спл ни калокуб.
Пользуясь ими вы ограничиваете себя и в выборе и росте.
Что спл что калокуб по сути своей та же аурдунья , набор скетчей. Да и STM озвучивает их лишь как пример использования а отнюдь не догму.
Пользуясь ими вы ограничиваете себя и в выборе и росте.
Что спл что калокуб по сути своей та же аурдунья , набор скетчей. Да и STM озвучивает их лишь как пример использования а отнюдь не догму.
если б я "плясал" от хал/спл врядли мне пришло в голову, что возможно вот так запрячь таймер
TIM2->SMCR = ((uint16_t)0x0066); // TS=110, SMS=110
TIM2->CCMR1 = ((uint16_t)0x0100); // CC2S=01 (PA1 start)
TIM2->CCMR2 = ((uint16_t)0x00F8); // OC3M=111, OC3PE=1, OC3CE =1 (PA0 strob)
TIM2->CCER = ((uint16_t)0x0100); // CC3E=1 (PA2 OUT)
TIM2->CR1 = ((uint16_t)0x0088); // ARPE, OPM
(stm32f103c8)(биты ARPE, OC3PE возможно лишние - не помню, проверял без них или нет)
не предполагал, что на таймер возможно подать раздельно три вещи (такт,старт,строб) - "курил" RM оказалось возможно. Из абстракций spl я б до этого не додумался. говорю за себя
это сочинял цепочку tim1-tim2-spi, когда хотел почти полностью аппаратно читать некую последовательность (полученную из двухполярного кода), tim1 определял начало посылки и стробом разрешал tim2, последний "сдвигал" клок для spi.
не подумайте, что призываю писать на регистрах, речь не об этом.
TIM2->SMCR = ((uint16_t)0x0066); // TS=110, SMS=110
TIM2->CCMR1 = ((uint16_t)0x0100); // CC2S=01 (PA1 start)
TIM2->CCMR2 = ((uint16_t)0x00F8); // OC3M=111, OC3PE=1, OC3CE =1 (PA0 strob)
TIM2->CCER = ((uint16_t)0x0100); // CC3E=1 (PA2 OUT)
TIM2->CR1 = ((uint16_t)0x0088); // ARPE, OPM
(stm32f103c8)(биты ARPE, OC3PE возможно лишние - не помню, проверял без них или нет)
не предполагал, что на таймер возможно подать раздельно три вещи (такт,старт,строб) - "курил" RM оказалось возможно. Из абстракций spl я б до этого не додумался. говорю за себя
это сочинял цепочку tim1-tim2-spi, когда хотел почти полностью аппаратно читать некую последовательность (полученную из двухполярного кода), tim1 определял начало посылки и стробом разрешал tim2, последний "сдвигал" клок для spi.
не подумайте, что призываю писать на регистрах, речь не об этом.
a797945, есть заголовочный файл, где описаны все регистры и маски для периферии. Можно обойтись без использования "магических чисел"

Иван Сусанин - первый полупроводник 
a797945, вот так писать неведомые числа в регистры - это же очень удобно и понятно, правда?
Добавлено after 1 minute 20 seconds:
[uquote="dosikus",url="/forum/viewtopic.php?p=3705092#p3705092"]Пользуясь ими вы ограничиваете себя и в выборе и росте.[/uquote]с чего бы? использование библиотек ааатнюдь не означает "только библиотечные функции и ни шагу в сторону".
Добавлено after 1 minute 20 seconds:
[uquote="dosikus",url="/forum/viewtopic.php?p=3705092#p3705092"]Пользуясь ими вы ограничиваете себя и в выборе и росте.[/uquote]с чего бы? использование библиотек ааатнюдь не означает "только библиотечные функции и ни шагу в сторону".
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704901#p3704901"]Eddy_Em, поясните связь между RTE драйверами CMSIS и HAL.[/uquote]
Что такое "RTE драйвер"? Базовый CMSIS — это просто заголовочные файлы, общие для всех ARM'ов. Я уже выше говорил. И SPL, и кал, и opencm3 включают в себя CMSIS — без него никуда!
Изучать МК надо, читая даташит, RM и эррату! А не ковыряясь в чужом быдлокоде!!!
Библиотеки для STM32 вообще не нужны. Хотя бы потому, что нет нормальной библиотеки. Я имею в виду header-only библиотеку, которая не будет содержать ничего лишнего, кроме макросов!
А все эти SPL и прочие калокубы — полный отстой, который только усугубляет. Работу они не облегчают.
Куб разве что иной раз полезен, чтобы выбрать подходящий МК под свои хотелки (скажем, нужно вам 8 независимых UART'ов — вуаля! а потом уже закрываем куб и работаем по-человечески).
Что такое "RTE драйвер"? Базовый CMSIS — это просто заголовочные файлы, общие для всех ARM'ов. Я уже выше говорил. И SPL, и кал, и opencm3 включают в себя CMSIS — без него никуда!
Что за чушь? Где я такой бред нес?И изучать МК переделевыя то, что написано для одного МК под другой - это уже практика, до которой и следует разобрать теорию на примерах. А у Вас какой-то замкнутый круг получается: сначала переделать, а потом изучать )))
Изучать МК надо, читая даташит, RM и эррату! А не ковыряясь в чужом быдлокоде!!!
Что за каша у вас в голове? Нет там никаких "драйверов"!!! Я даже ссылку кидал на свой гитхаб. Слабо пройти, и посмотреть, что входит в CMSIS? Там тупо десяток заголовочных файлов: общее + для разных архитектур.ПростоНуб писал(а):И вижу в CMSIS только два варианта драйверов. Один когруэнтный SPL, а второй - RTE. Так о каких драйверах тогда речь?
Нет, CMSIS - не библиотека! А базовый набор заголовочных файлов для работы со всеми семействами ARM'ов.Asmodey писал(а):Так-то понятно, что это все либы, но в чем разница между ними?
Библиотеки для STM32 вообще не нужны. Хотя бы потому, что нет нормальной библиотеки. Я имею в виду header-only библиотеку, которая не будет содержать ничего лишнего, кроме макросов!
А все эти SPL и прочие калокубы — полный отстой, который только усугубляет. Работу они не облегчают.
Выкиньте это дерьмище! Ни кайло, ни калокуб вам не нужны!Asmodey писал(а):Ее можно использовать в Keil? Или куб обязателен?
Куб разве что иной раз полезен, чтобы выбрать подходящий МК под свои хотелки (скажем, нужно вам 8 независимых UART'ов — вуаля! а потом уже закрываем куб и работаем по-человечески).
Это — единственный правильный вариант с небольшой оговоркой: magick numbers — зло! Нельзя их писать. Надо писать макросы. Тогда читабельность и поддерживаемость кода будет на высоте.a797945 писал(а): врядли мне пришло в голову, что возможно вот так запрячь таймер
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 3386
- Зарегистрирован: Пн окт 11, 2010 19:00:08
[uquote="VladislavS",url="/forum/viewtopic.php?p=3705305#p3705305"]Макросы зло, язык идёт в сторону отказа от них.[/uquote]Eddy_Em писал(а):magick numbers — зло! Нельзя их писать. Надо писать макросы.
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
м-да, надо было сделать еще оговорку: код приведен не в качестве примера, а чтоб не быть голословным.
за магические цифры - согласен, понимаю. Только я вот ни разу не программист (мне так было понятней и компактней) и переносимость здесь мне не нужна, уговорил железяку выполнять как мне надо и пошел дальше собирать механизм.
господа-товарищи, извиняюсь, что эти пять строчек доставили кому-то не приятные ощущения. Сорри.
за магические цифры - согласен, понимаю. Только я вот ни разу не программист (мне так было понятней и компактней) и переносимость здесь мне не нужна, уговорил железяку выполнять как мне надо и пошел дальше собирать механизм.
господа-товарищи, извиняюсь, что эти пять строчек доставили кому-то не приятные ощущения. Сорри.
- Сообщения: 7004
- Зарегистрирован: Сб янв 28, 2006 22:47:24
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3705341#p3705341"]Нет, CMSIS - не библиотека! А базовый набор заголовочных файлов для работы со всеми семействами ARM'ов.[/uquote]
Описание регистров и битов для обращения к ним?
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3705341#p3705341"]Ни кайло, ни калокуб вам не нужны!.[/uquote]
Кайло в смысле Keil? А что тогда, с моим нулевым опытом? Игрался немного с Visual Studio Code, но он для меня после MPLAB как темный лес, в котором я светодиодом моргну только через полгода...
Описание регистров и битов для обращения к ним?
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3705341#p3705341"]Ни кайло, ни калокуб вам не нужны!.[/uquote]
Кайло в смысле Keil? А что тогда, с моим нулевым опытом? Игрался немного с Visual Studio Code, но он для меня после MPLAB как темный лес, в котором я светодиодом моргну только через полгода...
Астролябия-сама меряет, было бы что мерять!!!


