No video

STM32. CMSIS. Урок#00: Настройка: RCC, GPIO, MCO, SysTick, Delay_ms, аналог HAL_GetTick().

  Рет қаралды 20,815

Олег Волков

Олег Волков

Күн бұрын

Привет друзья! Вот уже 2 года, как я изучаю STM32.
Самое время, после опыта работы с библиотекой HAL, когда мы уже более менее ознакомились с периферией микроконтроллера, начать осваивать его на низкоуровневой библиотеке CMSIS.
В первом уроке мы подключим кварцевый резонатор, настроим МК на 72 МГц, узнаем как делать инициализацию GPIO, узнаем, как подключить выход с ножки Master Clock Output, настроим системный таймер, моргнем светодиодом, напишем свою функцию задержки и параллельно увидим аналог HAL_GetTick().
00:00 Введение
01:47 Что понадобится для разработки
02:39 Разбор проекта в CubeMX
03:51 Управление GPIO на выход. Регистр BSRR
08:09 Инициализация порта и настройка GPIO
16:26 Настройка RCC
43:32 Настройка SysTick(Создаем Delay_ms и аналог HAL_GetTick())
01:00:39 Настройка MCO
Материалы из урока: github.com/Solderingironspb/S...
Мои заметки по CMSIS: github.com/Solderingironspb/S...
Группа вконтакте: solderingiron.stm32
Настройки для VisualGDB: solderingiron.stm32?w=...
ЯндексДзен: zen.yandex.ru/id/622208eed2eb...

Пікірлер: 108
@artstone7705
@artstone7705 2 жыл бұрын
Вот вот оно наконец - то.Надеюсь вы будете и дальше выпускать видео по CMSIS.Очень крутое и полезное видео.👍
@user-hk1xl4ee1e
@user-hk1xl4ee1e 2 жыл бұрын
Олег молодец, большую работу проделал и понятным языком все изложил.
@megavolttt2015
@megavolttt2015 Ай бұрын
Знаете. Ваш урок подтолкнул меня дальше продолжить изучение СТМ32. Спасибо!!!
@Alex-ed6hg
@Alex-ed6hg Жыл бұрын
Люто плюсую ! Действительно самое понятное объяснение на просторах интернета, сугубо моё личное мнение ...
@megavolttt2015
@megavolttt2015 Ай бұрын
Великолепно! Просто. Не спеша.
@antonGoldinov
@antonGoldinov 11 ай бұрын
Благодарен Автору видео. Пожимаю руку.
@megavolttt2015
@megavolttt2015 Ай бұрын
Ищешь ищешь.. А это пожалуй лучший урок по stm32.
@szapsis
@szapsis Жыл бұрын
Спасибо большое за твой труд друг!
@svbHiTek
@svbHiTek 10 ай бұрын
У меня STM32F030, смотрю ваше видео, вникаю в свой даташит, регистры у них разные, но общий смысл понятен. Спасибо за труды!!!
@morshu8800
@morshu8800 3 ай бұрын
У меня сейчас тоже самое, только на G030)
@KARMAElectronics
@KARMAElectronics 2 жыл бұрын
Очень здорово, что тема CMSIS освещается все бОльшим количеством электронщиков) Вот пара рекомендаций: - Регистры BRR BSRR работают как триггеры установки соответствующих бит в ODR и считывать их не требуется (скорее даже противопоказано) - Включать HSI при старте не требуется, он уже включен по умолчанию (иначе откуда МК будет тактироваться в startup и начале main) - HSEBYP используется для подключения внешнего тактового генератора (не резонатора) - Не есть гуд подключать системную линию тактирования к отключенному PLL (да и к другим отключенным источникам тактирования) - В регистре RCC_CFGR поле SWS является статусом и доступно только на чтение, записывать туда не требуется. - Настроек SysTick в RefMan нет, так как он относится к ядру контроллера Cortex-M3, соответственно его описание будет в другом документе. А в целом начинание хорошее, удачи!
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Спасибо!)
@Solderingironspb
@Solderingironspb Жыл бұрын
по поводу "Не есть гуд подключать системную линию тактирования к отключенному PLL (да и к другим отключенным источникам тактирования)" отдельное, жирное СПАСИБО!) Ух и долго же я мучался с поднятием китайского-китайского GD32F103CBT6. Ни в какую дебажиться не хотел. Хотя оригинальный STM32F103C8T6 и оригинальный GD32F103CBT6 хавали и так. Помогло)
@KARMAElectronics
@KARMAElectronics Жыл бұрын
@@Solderingironspb 👍👍👍
@dekus80
@dekus80 Жыл бұрын
Вообще порядок действий по установке именно для проверки себя, можно посмотреть открыв CubeMX, выбрать конфигурацию и посмотреть сгенерированный код в LL. И еще сравнить для проверки значения регистров после инита свои и что сделал код CubeMX по желаемой конфигурации. Так же позволяет оценить где накосячил (или нет). Сейчас новичкам проще, есть CubeMX для проверки, подсказке.
@OpenFrimeTVcom
@OpenFrimeTVcom Жыл бұрын
а на счет буфера флеша? его ведь нужно включать только когда делитель шины отличено от 1?
@OpenFrimeTVcom
@OpenFrimeTVcom 2 жыл бұрын
вау. спасибо) очень крутой видос
@konstantinewhite614
@konstantinewhite614 Жыл бұрын
Круто, спасибо, отличное видео! 👍
@alexanderurezchenko6446
@alexanderurezchenko6446 Ай бұрын
Спасибо за видео.
@victoramartov1916
@victoramartov1916 2 ай бұрын
Спасибо вам за урок!
@01wave01
@01wave01 Жыл бұрын
Спасибо за замечательный урок! Искал как раз как раскурить arm как раз на bluepill. Прошелся вместе с автором по шагам. Очень нравится такой подход - сначала генерируем что-то работающее, когда не знаешь даже за что взяться сначала. Потом шаримся по нужным докам вместе, и постепенно переписываем на что-то более глубокое, низкоуовневое. Пришло понимание структуры - где заканчивается stm32 и начинается cortex. Спасибо что поделились в таком подробном виде! PS. В некоторых регистрах RCC были биты статуса (от какого источника тактирование), которые только на чтение - писать в них не нужно.
@dekus80
@dekus80 Жыл бұрын
Только F103 давно устарел. Я не понимаю этот лаг в 15+ лет (столько уж F103). Одну и ту же инфу тянут друг у друга из года в год, хотя все менялось с годами и появлялись интереснее МК. Новички продолжают брать и изучать старье, т.к. им его предлагают к изучению и передавая дальше, замыкая круг. И если уж с нуля изучать то что-то актуальное, а не то что давно умерло с появлением более актуального. Если на платке и нужен камень посовременнее и сравнимо флеша, то бери и начинай изучать F401, это уже Cortex M4F с поддержкой плавающей точки и при этом потребление в полтора раза меньше F103. А если нужно что попроще есть современный Cortex M0+ STM32G030 (есть даже 32бит и 128МГц таймер, у g030 есть все что у g031 если что, фишка st одна маска, это какой ШИМ можно замутить, бгг)).с потреблением ~4.6мА на 64МГц, это как у древнего 8бит дна AVR только на 16МГц. Самый древний Cortex это M3, тот что F103. Потом появились M0 и M4 с переосмыслением некоторых вещей. И как бы разделение ядро M4 посложнее и камни для задач посложнее и M0 аналогично наоборот. У них кое что по своему. Например регистры GPIO у M0/M4 свои, полностью отличные от M3. Соответственно эти уроки не подойдут. Но ты задайся вопросом, нужно ли начиная тебе брать самый первый Cortex - M3 и самый первый камень - F103 по тех процессу, которые уж несколько раз сменились. Мы ж уже не в каком нибудь 2010 году. Когда есть современнее МК, а последняя серия у ST это STM32G0/G4 на M0/M4 и M3 там даже уже нет. Но от китайцев есть интересные современные, где знания регистров F103 не пропадут. Есть 55р энергоэффективные HC32V203. Я вот прям в данным момент с ними играюсь. Потребляет ~4.6ма на 72МГц, когда как F103 порядка 30ма при одинаковых условиях. Не хилая разница, да? И работают до 144МГц. И даже в мелком tssop20 есть и CAN и USB. Перефирия скопирована с F103, только ядро riscv, а не cortex, но если не программировать на ассемблере, то разницы нет. И свой программатор для riscv за ~150р. Но они продаются в виде микросхем, нужно уметь сделать свою платку под МК. Может конечно это уже для кого то проблема, но имхо кто решил увлекаться сделать для себя и платку для МК должно быть частью. У меня хобби и проекты часто не требующие много ног, поэтому интересуют чтоб в серии были корпуса tssop20 и чтоб были энергоэффективными (по этому параметру хуже f103 просто нет), соответственно такими и интересуюсь. tssop20 размер сопоставим с soic8, но 20 ног. И всегда можно перейти на мелкий QFN, если нужно еще меньше размер или на LQFP если больше ног все в рамках одного МК. stm32g030 привел, hc32v203 привел. Цена порядка 60р. Есть еще сопоставимый им gd32e220 на Cortex M23 в tssop20 и у него QFN 3x3мм, этим мог похвастаться только stm8s. Я раньше на QFN3x3 на stm8s тоже делал платки :). Из жирных... За 300р уже можно купить "жирного" китайца AT32F403A, Cortex M4F, 1МБ флеша, 200кБ ОЗУ, 240МГц. И замутить не стесняясь что-то операционкой с цветным дисплеем с анимацией и контролами, где все будет просто летать. В AT32 все камни они делают только Cortex M4. А на готовой платке я привел пример для старта для задач посложнее или по принципу "для всего" F401, для попроще, G030(или 31). Или уж делать свою платку для HC32V203 если хочется именно F103 изучать. Но мамонта STM32F103 жрущего как не в себя (которому ардуинщики не дают покоя и китайцы удовлетворяют их спрос клонами) на синих платках пора забыть.
@user-qv2mk5je8x
@user-qv2mk5je8x Жыл бұрын
@@dekus80 Я, так понимаю, эту длинную тираду ты писал в преддверье открытия канала с уроками по новым МК? А может это и есть первый урок? Когда следующий? У меня сложилось впечатление, что это писал человек под кайфом. Почитай свою писанину сам. Какой то бред.
@user-gx7yd6jd9g
@user-gx7yd6jd9g 7 ай бұрын
​@@dekus80ну ты выдал речь....😮 Даже не знаю что тебе сказать. А ничего что учебники математики начинаются с того, что Пифагор напридумывал? Цель этого ролика научить людей, а не управлять полетом БПЛА.
@user-rf1yx4kp4r
@user-rf1yx4kp4r 4 ай бұрын
так, стопе, я еще атмегу8 не изучил)) Спасибо за ваш труд.
@user-yg4mu7rm7k
@user-yg4mu7rm7k 2 жыл бұрын
просто шик. спасибо)
@igornikitine6020
@igornikitine6020 2 жыл бұрын
Спасибо Добрый человек! :))
@PastuhMedvedey
@PastuhMedvedey 2 жыл бұрын
Понравилось, лайк ))
@user-hw8cl8we7j
@user-hw8cl8we7j 6 ай бұрын
Однозначно лайк!
@Funkbass1986
@Funkbass1986 Жыл бұрын
Я для себя такую же библиотеку написал для Mega168 и Mega328. То есть не макросами ща которыми адреса регистров, а прямо реализовал шаблонный класс Register_basic, а с него уже реализовал регистры контроллера. Позапихал их в соответствующие namespace например Core, GPIO, TIMER, ADC итп. И в каждом namespace сделал функции, с названиями, соотвествующими действию битов.
@user-vankv
@user-vankv 3 ай бұрын
Молодчина!
@user-pc4zj1fc8q
@user-pc4zj1fc8q 3 ай бұрын
спасибо Вам!
@svbHiTek
@svbHiTek 7 ай бұрын
Кстати SysTick можно настроить одной строчкой, вызвав функцию SysTick_Config(передав необходимое значение), она живет в файле от конкретного ядра, в вашем случае core_cm1.h
@OpenFrimeTVcom
@OpenFrimeTVcom Жыл бұрын
копаю тут потихоньку и у меня возник вопрос. вот допустим мы пишем GPIOC->BSRR = GPIO_BSRR_13; получается мы инициализируем структуру, но она ведь нигде не объявлена, как так? Переходил по файлам, пока не дошёл до #define GPIOC ((GPIO_TypeDef *)GPIOC_BASE) это какие то корни, но не пойму что значит эта строчка((
@igornikitine6020
@igornikitine6020 2 жыл бұрын
👍👍👍👍👍
@user-pp2hz7ic7h
@user-pp2hz7ic7h 2 жыл бұрын
👍👍👍👍
@nurbolatamanbayev9617
@nurbolatamanbayev9617 2 жыл бұрын
👍👍
@do-vitas7079
@do-vitas7079 2 жыл бұрын
Инфа крайне полезна. Но как-то все сумбурно, человек который писал только на hal не совсем догоняет наверно че там куда сдвигать, че за чем и в какой последовательности надо делать, как-то наверно надо пустой проект создать для начала. Может лучше от hal совсем отойти, а то у вас получилось что что-то работает там что-то тут, например вы не включили порты а13,14 на отладку а значит их инит прошел где-то при помощи hal. Не сочтите за упреки просто мысли, ценность вашей работы очень велика, сам смотрел ваши видео когда бился с lcd. Еще бы добавил что в keil можно избежать процедуры инита там это само генерируется, но systick все равно писать надо. Еще если кто думает что возможно hal-а ему хватит то немного разочарую их, нет не хватит. Пример недавно на 373 мк пытался запустить adc ижекционные каналы(для своего ЛБП) на hal или LL и вы знаете бился очень долго и все равно не вышло, там в процедуре инета какая-то ошибка но найти ее в хале... во общем несколько строчек инета регистров все решило! Спасибо за труды в наше время весьма полезно!
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Пустой проект я думал делать, но потом. Сделал в таком порядке, потому что, как иначе себя проверить, представьте, час программируем и потом у нас ничего не работает, потому, что в коде где-то ошибка(какой-то бит не туда поставили). А тут мы сначала моргнули светодиодом, точно знаем, что этот кусок правильный, настроили порт, проверили, и так постепенно удалили все HAL функции, оставив CMSIS. На VisualGDB режим дебага внутрях зашит, как и в keil, настраивать не нужно. Человек, после HAL вполне может не знать про битовые операции, НО, если он топает по моим урокам и просмотрел все видео, то у него вообще не должно возникать вопросов, т.к. я стараюсь все вопросы в видео освещать. А последовательность я делаю специально по битам, с 0 и на возрастание. Чтоб опять же не было вопросов, как в видео у тех, кто расскажет, а потом просто накопирует функции. Посмотрим, как будет) потихонечку разберемся)
@user-hc1uc6zq7y
@user-hc1uc6zq7y 3 ай бұрын
Доброго времени суток! Подскажите пожалуйста, вот Вы уже как с опытом, как считаете писать код на языке С++ возможно или есть какие то трудности в написании на нём ?
@user-ty2vs3ek3p
@user-ty2vs3ek3p Жыл бұрын
Что нужно нажать, чтобы перейти в библиотек, где хранится указанная функция? 04:33 например
@Solderingironspb
@Solderingironspb Жыл бұрын
F12
@user-hw8cl8we7j
@user-hw8cl8we7j 6 ай бұрын
Уважаемый лектор, Output push-pull - не тяни талкай, а двухтактный режим выхода GPIO
@aleksandrdrobyshev7623
@aleksandrdrobyshev7623 Жыл бұрын
1) 19:42, вместо HSION у тебя HSEON. 2) 27:38, регистр SWS, это регистр-индикатор, его не устанавливать нужно, его считывать можно/нужно. В конечном итоге ничего не заработло....
@ciklomat
@ciklomat 2 жыл бұрын
Супер! Но если заранее подготовить код и пройтись по нему с объяснениями, то видео не будет так затянуто, а смотреть будет интересней и количество полученной инфы будет то же.
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Заранее подготовить код тоже не всегда хорошо, т.к. бывает скакать приходится по рефмануалу, а просто копировать и вставлять функции - это далеко не всем понятно. Многие блогеры этим грешат. Расскажут все по порядку и все вроде хорошо, а потом просто влепят кусок кода, где порядок выполнения команд нарушен, а почему так - блогер уже не говорит. В итоге человек, смотрящий это все - теряется. Кстати, у меня заранее подготовлен код, можете даже глянуть заметки по cmsis. Ссылка под видео. Я там единый файл с комментами бомблю потихонечку. Комментов миллион)
@ciklomat
@ciklomat 2 жыл бұрын
@@Solderingironspb Есть такой блогер Александр Писанец микроконтроллеры AVR ,так я по его урокам учился.Считаю именно такой формат преподавания очень эффективным.
@user-qc7ib5fj9n
@user-qc7ib5fj9n 2 жыл бұрын
все хорошо ,только ля работы на регистрах было бы лучше на Keil или IAR писать - там все от первой и до последней буквы можно на низком уровне настраивать.
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Так тут тоже. Разницы нет совершенно никакой)
@user-qc7ib5fj9n
@user-qc7ib5fj9n 2 жыл бұрын
@@Solderingironspb настройка в Кубе тактирования тоже съедает память) ну это так -в общем отличная работа!
@stepanovvictor9307
@stepanovvictor9307 2 жыл бұрын
Регистр BSRR по идее доступен только для записи, макрос setbit - это чтение/модификация/запись. То есть, для того, чтобы записать в регистр, мы его должны с начала считать. Если сейчас все работает, то в будущем, по этому адресу могут свободно жить какие-то данные, например статусы, доступные только для чтения, и результаты работы будут крайне интересны...
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Чего?) #define SET_BIT(REG, BIT) ((REG) | = (BIT)) Мы просто добавляем в регистр 1. Все.
@stepanovvictor9307
@stepanovvictor9307 2 жыл бұрын
Олег, выражение reg|=bit буквально обозначает reg = reg | bit, то есть в начале процессор читает регистр...
@Solderingironspb
@Solderingironspb 2 жыл бұрын
@@stepanovvictor9307 ну тогда WRITE_REG использовать?
@stepanovvictor9307
@stepanovvictor9307 2 жыл бұрын
В данном случае да. Ошибка вообще типовая. Подобное некогда давал студентам в практике поиска ошибок для at94, в софтовой переферии можно накрутить что угодно ;-)
@OpenFrimeTVcom
@OpenFrimeTVcom 2 жыл бұрын
@@stepanovvictor9307 хм, а как же тогда если там уже есть какие то данные, и нам нужно изменить только один бит, а записью = мы перепишем все...
@user-gx7yd6jd9g
@user-gx7yd6jd9g 7 ай бұрын
В плане обучения запрограммировал RCC через регистры, а потом думаю и нафига я это делал, включил в МХ вместо HAL, LL и все дела. Но главное даже не в этом, если нужно добавить еще периферию, уже в процессе кодинга, то только руками, MX все снесет, если где то лоханешься и чего нибудь не туда перенесешь. Приведите примеры, где программирование на CMSIS крайне необходимо.
@Solderingironspb
@Solderingironspb 7 ай бұрын
Подняв однажды всю периферию на CMSIS - пропадет проблема с кодингом других микроконтроллеров, т.к. основы уже будут. Я так спокойно теперь программирую RISC-V на RVMSIS. А там нет CubeMX. Пример, где программирование на CMSIS крайне необходимо - вывод информации на дисплей по тому же spi интерфейсу.
@user-gx7yd6jd9g
@user-gx7yd6jd9g 7 ай бұрын
Ну в принципе я потому и начал это смотреть, поскольку сейчас как раз экран по spi надо подключить, но начал на G474, смотрел как это сделано на 103, а потом переносил на 474. Беда в том, что общего там меньше чем отличий, вот и возник вопрос: а зачем так углубляться? Я это сделал и через день уже ничего не помню, а если возьму H743, который на полке пока лежит, то там наверняка будет море новых сюжетов. Так что в раздумиях, а надо ли это и если надо, то где.
@OpenFrimeTVcom
@OpenFrimeTVcom 2 жыл бұрын
что самое печальное, так это то что такие ролики набирают крайне мало просмотров. Давайте запилим совместный ролик ну или вы каким то образом мне поможете или подскажите с проектом. А я в своем ролике сделаю рекламную вставку...
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Привет!) Я, как в таковой рекламе не нуждаюсь, т.к. себя за блогера-то не считаю). Все видео на канале - это побочка от моих занятий (Расскажи будущему себе, что ты тут делал, чтоб не забыть). Всегда считал, что кому надо - тот найдет и посмотрит). Совместные проекты можно делать, главное, чтоб интересные были)
@OpenFrimeTVcom
@OpenFrimeTVcom 2 жыл бұрын
@@Solderingironspb я понял. тогда если что нибудь придумаю, напишу)
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Договорились 🤝
@Galdershten
@Galdershten Жыл бұрын
Подскажите, как в CubeIde вкл окно с автоподстановкой когда печатаешь?
@Solderingironspb
@Solderingironspb Жыл бұрын
Добрый день!) если Вы про автоподстановку в дефайны, когда пишешь SET_BIT(…. То тут я сам не понимаю, почему куб не видит автоподстановку в них. И где это включить тоже не знаю…
@Galdershten
@Galdershten Жыл бұрын
@@Solderingironspb У меня он ее вообще не делает) Например у вас на 4:54 появилось окно с разными GPIO_BSRR_BR.. У меня он даже его не выводит
@Solderingironspb
@Solderingironspb Жыл бұрын
Ну вот я про это и говорю, что в дефайн не работает автоподстановка в кубе. Пока так и не понял, где это включать.
@NIKOLAY_PSHONIA
@NIKOLAY_PSHONIA Жыл бұрын
Сначало ушли с stdperif на HAl, а теперь на сmsis.
@svbHiTek
@svbHiTek 7 күн бұрын
Добрый день Олег, такой вопрос, уже голову сломал, не помню у вас ли видел в каком то видео, как вы сделал bat файл, который делает чистый проект в CubeIDE, или не у вас, подскажите пожалуйста.
@Solderingironspb
@Solderingironspb 7 күн бұрын
Добрый день! Такс...Вот видео: kzfaq.info/get/bejne/Zp6BlcKgqdCUnJs.htmlsi=GyDROGLtYI0sUR-- А вот CMSISProjectCreator: github.com/Solderingironspb/CMSIS_PROJECT_CREATOR
@svbHiTek
@svbHiTek 7 күн бұрын
@@Solderingironspb Спасибо вам, а то уже примерно пол года как периодически ищу))))))
@thqthq9999
@thqthq9999 3 ай бұрын
Там один бит наверное должен называтся HSION ато вы HSEON включили два раза
@harl0k195
@harl0k195 7 ай бұрын
А почему вы статусные регистры задаете , разве они не устанавливаются аппаратно?
@Solderingironspb
@Solderingironspb 7 ай бұрын
Укажите минуту видео, пожалуйста, чтоб мне соориентировать по Вашему вопросу.
@harl0k195
@harl0k195 7 ай бұрын
⁠@@SolderingironspbНу например 26:14 там регистр sws вы его задали , хотя там написано что он указывает что sw установился, или например на уроке про usart вы вместо того чтобы проверить txe вы проверяете txeie
@maskon78
@maskon78 2 жыл бұрын
Еще бы ll библиотеки....
@Minas__Morgul
@Minas__Morgul 2 жыл бұрын
Конечно спасибо, но для чего это все нужно? Всегда же можно пойти во внутрь hal и посмотреть как оно там все через регистры работает Насчет уроков.... narod stream и sappise и NR.electronics достаточно много сделали на эту тему.
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Для чего это нужно: мой канал о самообучении. Я сам учусь и с другими делюсь. Вообще не ориентируюсь на то, кто и что пишет). Если бы HAL внутри был такой очевидный и простой, то конечно, я бы не читал рефмануал, т.к. итак все понятно было бы, но это не так.
@hieverybody359
@hieverybody359 2 жыл бұрын
Оказывается что это не слова управляют микроконтроллером!))))))))))))))))) Во ты программист мощный . Ну хорошо хоть сейчас понял. Это все называется макросы и они делаются чтоб ты не писал цифры а писал обстракции а не цифры, а так ты должен прописывать адреса памяти и значение которое ты туда хошь занести все в hex ну или bin как пожелаешь))
@alekseibutyaev2318
@alekseibutyaev2318 11 ай бұрын
А не кто не проюывал битовые поля юзаь ...
@user-gm8vm4om1r
@user-gm8vm4om1r 2 жыл бұрын
hal это как C, cmsis как ассемблер, уровень регистров. Если слабый контроллер и использовать по максимуму но cmsis, hal для всего остального
@micromaster4405
@micromaster4405 2 жыл бұрын
А ассемблер в данном случае как машинный код получается?
@vicgreen1413
@vicgreen1413 2 жыл бұрын
@@micromaster4405 Забудьте о нем! Кроме супер-быстрых микросекунды - прерываний - он не нужен. А еще больше не нужны прерывания с такой частотой
@micromaster4405
@micromaster4405 2 жыл бұрын
@@vicgreen1413 ну 10-20 кГц прерывания очень даже нужны в определенных случаях, а с помощью дизассемблера удобно работу fpu как минимум проверять
@vicgreen1413
@vicgreen1413 2 жыл бұрын
@@vitgo Написание на ASM, на мой взгляд, это полное неуважение к решению поставленной задачи, презрительное отношение к качеству выполняемого решения, ничем неоправданное затягивание времени исполнения и полное игнорирование возможности повторного использования кода и комфортного сопровождения продукта в течении всего жизненного цикла
@vicgreen1413
@vicgreen1413 2 жыл бұрын
@@vitgo Ну а HAL, в имполнении STM - это превращение любого процессора в продвинутый вариант i8080
@yuribochkarev4477
@yuribochkarev4477 2 жыл бұрын
Головная боль этот CMSIS, не зря придумали HAL
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Если хорошо знать МК и долго сидеть на нем, то не такой уж головняк. За 2-4 часа напишете инит нужной периферии, потом распишете ее работу, а далее уже будете, как функции использовать. Для работы с теми же дисплеями на spi, CMSIS, как никогда кстати). Там HAL в скорости проигрывает далеко не в 2 раза.
@yuribochkarev4477
@yuribochkarev4477 2 жыл бұрын
@@Solderingironspb инициализацию переферии делать на HAL в конфигураторе cube, а реализацию методов уже на cmsis. Иначе только жить в обнимку с этим референс мануалом и ловить бесконечные ошибки-проблемы при инициализации
@Solderingironspb
@Solderingironspb 2 жыл бұрын
Можно и так
@vicgreen1413
@vicgreen1413 2 жыл бұрын
@@Solderingironspb А еще лучше перемолоть то, что выдает HAL или LL и тогда наступит счастье. Код становиться понятным и предсказуемым
@DufisAlpano
@DufisAlpano 18 күн бұрын
Нет в инете нормального начала для прграммирования! Попробуйте объяснить программирование так, как дети изучают жизнь, а именно они сперва копируют всё что видят, строят кубики, пирамидки а уж потом от простого к сложному постигают основы жизни, идут в школу, идут в вузы. А по ходу всё обучение в инете показывают типа как студенты вышки пишут интегралы, а что, зачем, большинству туго доходит. Потому как никто не задумывается о том как он доносит инфу
@OpenFrimeTVcom
@OpenFrimeTVcom Жыл бұрын
У вас не правильно прописан бит FLASH_ACR_LATENCY_2 . Если посмотреть в регистрах что это значит, то это 0х4, и это не 010 который вы использовали. Похоже нужно писать FLASH_ACR_LATENCY_1
@OpenFrimeTVcom
@OpenFrimeTVcom Жыл бұрын
хотя я посмотрел у всех по разному в файле cmsis описан этот бит. можете просто проверить..
@Solderingironspb
@Solderingironspb Жыл бұрын
LATENCY: Latency These bits represent the ratio of the SYSCLK (system clock) period to the Flash access time. 000 Zero wait state, if 0 < SYSCLK
@OpenFrimeTVcom
@OpenFrimeTVcom Жыл бұрын
@@Solderingironspb а я как то случайно заметил. и сначала долго не мог понять как же так
НЫСАНА КОНЦЕРТ 2024
2:26:34
Нысана театры
Рет қаралды 1,6 МЛН
小宇宙竟然尿裤子!#小丑#家庭#搞笑
00:26
家庭搞笑日记
Рет қаралды 21 МЛН
Why Is He Unhappy…?
00:26
Alan Chikin Chow
Рет қаралды 79 МЛН
Изучаю STM32!
20:26
Лёша Кластер
Рет қаралды 191 М.
#1-The 1-wire debugging protocol for RISC-V MCU CH32V003
12:48
Visual Studio + VisualGDB + STM32. Обзор. Пробный проект.
29:38
STM32. CMSIS #0. Основные команды
11:22
NR.electronics
Рет қаралды 20 М.
RISC-V WCH CH32V203C8T6. Похоже на STM32? Разбор полета
33:45
НЫСАНА КОНЦЕРТ 2024
2:26:34
Нысана театры
Рет қаралды 1,6 МЛН