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

Поділитися
Вставка
  • Опубліковано 23 лип 2024
  • Привет друзья! Вот уже 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...
  • Наука та технологія

КОМЕНТАРІ • 105

  • @megavolttt2015
    @megavolttt2015 Місяць тому

    Знаете. Ваш урок подтолкнул меня дальше продолжить изучение СТМ32.
    Спасибо!!!

  • @user-hk1xl4ee1e
    @user-hk1xl4ee1e 2 роки тому +2

    Олег молодец, большую работу проделал и понятным языком все изложил.

  • @artstone7705
    @artstone7705 2 роки тому +1

    Вот вот оно наконец - то.Надеюсь вы будете и дальше выпускать видео по CMSIS.Очень крутое и полезное видео.👍

  • @antonGoldinov
    @antonGoldinov 10 місяців тому +2

    Благодарен Автору видео. Пожимаю руку.

  • @megavolttt2015
    @megavolttt2015 Місяць тому

    Ищешь ищешь.. А это пожалуй лучший урок по stm32.

  • @megavolttt2015
    @megavolttt2015 Місяць тому

    Великолепно! Просто. Не спеша.

  • @szapsis
    @szapsis Рік тому +2

    Спасибо большое за твой труд друг!

  • @Alex-ed6hg
    @Alex-ed6hg Рік тому

    Люто плюсую ! Действительно самое понятное объяснение на просторах интернета, сугубо моё личное мнение ...

  • @KARMAElectronics
    @KARMAElectronics Рік тому +9

    Очень здорово, что тема CMSIS освещается все бОльшим количеством электронщиков) Вот пара рекомендаций:
    - Регистры BRR BSRR работают как триггеры установки соответствующих бит в ODR и считывать их не требуется (скорее даже противопоказано)
    - Включать HSI при старте не требуется, он уже включен по умолчанию (иначе откуда МК будет тактироваться в startup и начале main)
    - HSEBYP используется для подключения внешнего тактового генератора (не резонатора)
    - Не есть гуд подключать системную линию тактирования к отключенному PLL (да и к другим отключенным источникам тактирования)
    - В регистре RCC_CFGR поле SWS является статусом и доступно только на чтение, записывать туда не требуется.
    - Настроек SysTick в RefMan нет, так как он относится к ядру контроллера Cortex-M3, соответственно его описание будет в другом документе.
    А в целом начинание хорошее, удачи!

    • @Solderingironspb
      @Solderingironspb  Рік тому

      Спасибо!)

    • @Solderingironspb
      @Solderingironspb  Рік тому

      по поводу "Не есть гуд подключать системную линию тактирования к отключенному PLL (да и к другим отключенным источникам тактирования)" отдельное, жирное СПАСИБО!) Ух и долго же я мучался с поднятием китайского-китайского GD32F103CBT6. Ни в какую дебажиться не хотел. Хотя оригинальный STM32F103C8T6 и оригинальный GD32F103CBT6 хавали и так. Помогло)

    • @KARMAElectronics
      @KARMAElectronics Рік тому

      @@Solderingironspb 👍👍👍

    • @dekus80
      @dekus80 Рік тому

      Вообще порядок действий по установке именно для проверки себя, можно посмотреть открыв CubeMX, выбрать конфигурацию и посмотреть сгенерированный код в LL.
      И еще сравнить для проверки значения регистров после инита свои и что сделал код CubeMX по желаемой конфигурации. Так же позволяет оценить где накосячил (или нет). Сейчас новичкам проще, есть CubeMX для проверки, подсказке.

    • @OpenFrimeTVcom
      @OpenFrimeTVcom Рік тому

      а на счет буфера флеша? его ведь нужно включать только когда делитель шины отличено от 1?

  • @svbHiTek
    @svbHiTek 10 місяців тому +1

    У меня STM32F030, смотрю ваше видео, вникаю в свой даташит, регистры у них разные, но общий смысл понятен. Спасибо за труды!!!

    • @morshu8800
      @morshu8800 3 місяці тому +1

      У меня сейчас тоже самое, только на G030)

  • @OpenFrimeTVcom
    @OpenFrimeTVcom 2 роки тому +1

    вау. спасибо) очень крутой видос

  • @konstantinewhite614
    @konstantinewhite614 Рік тому

    Круто, спасибо, отличное видео! 👍

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 22 дні тому

    Спасибо за видео.

  • @victoramartov1916
    @victoramartov1916 2 місяці тому

    Спасибо вам за урок!

  • @igornikitine6020
    @igornikitine6020 2 роки тому

    Спасибо Добрый человек! :))

  • @user-yg4mu7rm7k
    @user-yg4mu7rm7k 2 роки тому

    просто шик. спасибо)

  • @user-vankv
    @user-vankv 3 місяці тому

    Молодчина!

  • @PastuhMedvedey
    @PastuhMedvedey 2 роки тому

    Понравилось, лайк ))

  • @user-hw8cl8we7j
    @user-hw8cl8we7j 6 місяців тому

    Однозначно лайк!

  • @user-rf1yx4kp4r
    @user-rf1yx4kp4r 3 місяці тому

    так, стопе, я еще атмегу8 не изучил))
    Спасибо за ваш труд.

  • @01wave01
    @01wave01 Рік тому

    Спасибо за замечательный урок! Искал как раз как раскурить arm как раз на bluepill. Прошелся вместе с автором по шагам. Очень нравится такой подход - сначала генерируем что-то работающее, когда не знаешь даже за что взяться сначала. Потом шаримся по нужным докам вместе, и постепенно переписываем на что-то более глубокое, низкоуовневое. Пришло понимание структуры - где заканчивается stm32 и начинается cortex. Спасибо что поделились в таком подробном виде!
    PS. В некоторых регистрах RCC были биты статуса (от какого источника тактирование), которые только на чтение - писать в них не нужно.

    • @dekus80
      @dekus80 Рік тому +2

      Только 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-pc4zj1fc8q
    @user-pc4zj1fc8q 2 місяці тому

    спасибо Вам!

  • @Funkbass1986
    @Funkbass1986 Рік тому

    Я для себя такую же библиотеку написал для Mega168 и Mega328. То есть не макросами ща которыми адреса регистров, а прямо реализовал шаблонный класс Register_basic, а с него уже реализовал регистры контроллера. Позапихал их в соответствующие namespace например Core, GPIO, TIMER, ADC итп. И в каждом namespace сделал функции, с названиями, соотвествующими действию битов.

  • @OpenFrimeTVcom
    @OpenFrimeTVcom Рік тому

    копаю тут потихоньку и у меня возник вопрос. вот допустим мы пишем GPIOC->BSRR = GPIO_BSRR_13; получается мы инициализируем структуру, но она ведь нигде не объявлена, как так? Переходил по файлам, пока не дошёл до #define GPIOC ((GPIO_TypeDef *)GPIOC_BASE) это какие то корни, но не пойму что значит эта строчка((

  • @svbHiTek
    @svbHiTek 6 місяців тому

    Кстати SysTick можно настроить одной строчкой, вызвав функцию SysTick_Config(передав необходимое значение), она живет в файле от конкретного ядра, в вашем случае core_cm1.h

  • @user-hc1uc6zq7y
    @user-hc1uc6zq7y 3 місяці тому

    Доброго времени суток! Подскажите пожалуйста, вот Вы уже как с опытом, как считаете писать код на языке С++ возможно или есть какие то трудности в написании на нём ?

  • @user-hw8cl8we7j
    @user-hw8cl8we7j 6 місяців тому

    Уважаемый лектор, Output push-pull - не тяни талкай, а двухтактный режим выхода GPIO

  • @igornikitine6020
    @igornikitine6020 2 роки тому

    👍👍👍👍👍

  • @nurbolatamanbayev9617
    @nurbolatamanbayev9617 2 роки тому

    👍👍

  • @user-pp2hz7ic7h
    @user-pp2hz7ic7h 2 роки тому

    👍👍👍👍

  • @do-vitas7079
    @do-vitas7079 2 роки тому +1

    Инфа крайне полезна. Но как-то все сумбурно, человек который писал только на hal не совсем догоняет наверно че там куда сдвигать, че за чем и в какой последовательности надо делать, как-то наверно надо пустой проект создать для начала. Может лучше от hal совсем отойти, а то у вас получилось что что-то работает там что-то тут, например вы не включили порты а13,14 на отладку а значит их инит прошел где-то при помощи hal. Не сочтите за упреки просто мысли, ценность вашей работы очень велика, сам смотрел ваши видео когда бился с lcd. Еще бы добавил что в keil можно избежать процедуры инита там это само генерируется, но systick все равно писать надо. Еще если кто думает что возможно hal-а ему хватит то немного разочарую их, нет не хватит. Пример недавно на 373 мк пытался запустить adc ижекционные каналы(для своего ЛБП) на hal или LL и вы знаете бился очень долго и все равно не вышло, там в процедуре инета какая-то ошибка но найти ее в хале... во общем несколько строчек инета регистров все решило! Спасибо за труды в наше время весьма полезно!

    • @Solderingironspb
      @Solderingironspb  2 роки тому +3

      Пустой проект я думал делать, но потом. Сделал в таком порядке, потому что, как иначе себя проверить, представьте, час программируем и потом у нас ничего не работает, потому, что в коде где-то ошибка(какой-то бит не туда поставили). А тут мы сначала моргнули светодиодом, точно знаем, что этот кусок правильный, настроили порт, проверили, и так постепенно удалили все HAL функции, оставив CMSIS. На VisualGDB режим дебага внутрях зашит, как и в keil, настраивать не нужно. Человек, после HAL вполне может не знать про битовые операции, НО, если он топает по моим урокам и просмотрел все видео, то у него вообще не должно возникать вопросов, т.к. я стараюсь все вопросы в видео освещать. А последовательность я делаю специально по битам, с 0 и на возрастание. Чтоб опять же не было вопросов, как в видео у тех, кто расскажет, а потом просто накопирует функции. Посмотрим, как будет) потихонечку разберемся)

  • @user-ty2vs3ek3p
    @user-ty2vs3ek3p Рік тому

    Что нужно нажать, чтобы перейти в библиотек, где хранится указанная функция? 04:33 например

  • @aleksandrdrobyshev7623
    @aleksandrdrobyshev7623 Рік тому +2

    1) 19:42, вместо HSION у тебя HSEON.
    2) 27:38, регистр SWS, это регистр-индикатор, его не устанавливать нужно, его считывать можно/нужно.
    В конечном итоге ничего не заработло....

  • @Galdershten
    @Galdershten Рік тому

    Подскажите, как в CubeIde вкл окно с автоподстановкой когда печатаешь?

    • @Solderingironspb
      @Solderingironspb  Рік тому

      Добрый день!) если Вы про автоподстановку в дефайны, когда пишешь SET_BIT(…. То тут я сам не понимаю, почему куб не видит автоподстановку в них. И где это включить тоже не знаю…

    • @Galdershten
      @Galdershten Рік тому

      @@Solderingironspb У меня он ее вообще не делает)
      Например у вас на 4:54 появилось окно с разными GPIO_BSRR_BR.. У меня он даже его не выводит

    • @Solderingironspb
      @Solderingironspb  Рік тому

      Ну вот я про это и говорю, что в дефайн не работает автоподстановка в кубе. Пока так и не понял, где это включать.

  • @ciklomat
    @ciklomat 2 роки тому

    Супер! Но если заранее подготовить код и пройтись по нему с объяснениями, то видео не будет так затянуто, а смотреть будет интересней и количество полученной инфы будет то же.

    • @Solderingironspb
      @Solderingironspb  2 роки тому +1

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

    • @ciklomat
      @ciklomat 2 роки тому

      @@Solderingironspb Есть такой блогер Александр Писанец микроконтроллеры AVR ,так я по его урокам учился.Считаю именно такой формат преподавания очень эффективным.

  • @user-qc7ib5fj9n
    @user-qc7ib5fj9n 2 роки тому

    все хорошо ,только ля работы на регистрах было бы лучше на Keil или IAR писать - там все от первой и до последней буквы можно на низком уровне настраивать.

    • @Solderingironspb
      @Solderingironspb  2 роки тому +1

      Так тут тоже. Разницы нет совершенно никакой)

    • @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 хм, а как же тогда если там уже есть какие то данные, и нам нужно изменить только один бит, а записью = мы перепишем все...

  • @harl0k195
    @harl0k195 6 місяців тому

    А почему вы статусные регистры задаете , разве они не устанавливаются аппаратно?

    • @Solderingironspb
      @Solderingironspb  6 місяців тому

      Укажите минуту видео, пожалуйста, чтоб мне соориентировать по Вашему вопросу.

    • @harl0k195
      @harl0k195 6 місяців тому

      ⁠@@SolderingironspbНу например 26:14 там регистр sws вы его задали , хотя там написано что он указывает что sw установился, или например на уроке про usart вы вместо того чтобы проверить txe вы проверяете txeie

  • @user-gx7yd6jd9g
    @user-gx7yd6jd9g 7 місяців тому

    В плане обучения запрограммировал RCC через регистры, а потом думаю и нафига я это делал, включил в МХ вместо HAL, LL и все дела. Но главное даже не в этом, если нужно добавить еще периферию, уже в процессе кодинга, то только руками, MX все снесет, если где то лоханешься и чего нибудь не туда перенесешь. Приведите примеры, где программирование на CMSIS крайне необходимо.

    • @Solderingironspb
      @Solderingironspb  7 місяців тому +1

      Подняв однажды всю периферию на CMSIS - пропадет проблема с кодингом других микроконтроллеров, т.к. основы уже будут. Я так спокойно теперь программирую RISC-V на RVMSIS. А там нет CubeMX. Пример, где программирование на CMSIS крайне необходимо - вывод информации на дисплей по тому же spi интерфейсу.

    • @user-gx7yd6jd9g
      @user-gx7yd6jd9g 7 місяців тому

      Ну в принципе я потому и начал это смотреть, поскольку сейчас как раз экран по spi надо подключить, но начал на G474, смотрел как это сделано на 103, а потом переносил на 474. Беда в том, что общего там меньше чем отличий, вот и возник вопрос: а зачем так углубляться? Я это сделал и через день уже ничего не помню, а если возьму H743, который на полке пока лежит, то там наверняка будет море новых сюжетов. Так что в раздумиях, а надо ли это и если надо, то где.

  • @OpenFrimeTVcom
    @OpenFrimeTVcom 2 роки тому +1

    что самое печальное, так это то что такие ролики набирают крайне мало просмотров. Давайте запилим совместный ролик ну или вы каким то образом мне поможете или подскажите с проектом. А я в своем ролике сделаю рекламную вставку...

    • @Solderingironspb
      @Solderingironspb  2 роки тому

      Привет!) Я, как в таковой рекламе не нуждаюсь, т.к. себя за блогера-то не считаю). Все видео на канале - это побочка от моих занятий (Расскажи будущему себе, что ты тут делал, чтоб не забыть). Всегда считал, что кому надо - тот найдет и посмотрит). Совместные проекты можно делать, главное, чтоб интересные были)

    • @OpenFrimeTVcom
      @OpenFrimeTVcom 2 роки тому

      @@Solderingironspb я понял. тогда если что нибудь придумаю, напишу)

    • @Solderingironspb
      @Solderingironspb  2 роки тому

      Договорились 🤝

  • @thqthq9999
    @thqthq9999 3 місяці тому

    Там один бит наверное должен называтся HSION ато вы HSEON включили два раза

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA Рік тому

    Сначало ушли с stdperif на HAl, а теперь на сmsis.

  • @Minas__Morgul
    @Minas__Morgul 2 роки тому

    Конечно спасибо, но для чего это все нужно? Всегда же можно пойти во внутрь hal и посмотреть как оно там все через регистры работает
    Насчет уроков.... narod stream и sappise и NR.electronics достаточно много сделали на эту тему.

    • @Solderingironspb
      @Solderingironspb  2 роки тому +1

      Для чего это нужно: мой канал о самообучении. Я сам учусь и с другими делюсь. Вообще не ориентируюсь на то, кто и что пишет). Если бы HAL внутри был такой очевидный и простой, то конечно, я бы не читал рефмануал, т.к. итак все понятно было бы, но это не так.

  • @maskon78
    @maskon78 2 роки тому

    Еще бы ll библиотеки....

  • @hieverybody359
    @hieverybody359 Рік тому

    Оказывается что это не слова управляют микроконтроллером!))))))))))))))))) Во ты программист мощный . Ну хорошо хоть сейчас понял. Это все называется макросы и они делаются чтоб ты не писал цифры а писал обстракции а не цифры, а так ты должен прописывать адреса памяти и значение которое ты туда хошь занести все в hex ну или bin как пожелаешь))

  • @user-gm8vm4om1r
    @user-gm8vm4om1r 2 роки тому +3

    hal это как C, cmsis как ассемблер, уровень регистров. Если слабый контроллер и использовать по максимуму но cmsis, hal для всего остального

    • @micromaster4405
      @micromaster4405 2 роки тому

      А ассемблер в данном случае как машинный код получается?

    • @vicgreen1413
      @vicgreen1413 2 роки тому

      @@micromaster4405 Забудьте о нем! Кроме супер-быстрых микросекунды - прерываний - он не нужен. А еще больше не нужны прерывания с такой частотой

    • @micromaster4405
      @micromaster4405 2 роки тому

      @@vicgreen1413 ну 10-20 кГц прерывания очень даже нужны в определенных случаях, а с помощью дизассемблера удобно работу fpu как минимум проверять

    • @vicgreen1413
      @vicgreen1413 2 роки тому +1

      @@vitgo Написание на ASM, на мой взгляд, это полное неуважение к решению поставленной задачи, презрительное отношение к качеству выполняемого решения, ничем неоправданное затягивание времени исполнения и полное игнорирование возможности повторного использования кода и комфортного сопровождения продукта в течении всего жизненного цикла

    • @vicgreen1413
      @vicgreen1413 2 роки тому

      @@vitgo Ну а HAL, в имполнении STM - это превращение любого процессора в продвинутый вариант i8080

  • @alekseibutyaev2318
    @alekseibutyaev2318 11 місяців тому

    А не кто не проюывал битовые поля юзаь ...

  • @yuribochkarev4477
    @yuribochkarev4477 2 роки тому

    Головная боль этот CMSIS, не зря придумали HAL

    • @Solderingironspb
      @Solderingironspb  2 роки тому

      Если хорошо знать МК и долго сидеть на нем, то не такой уж головняк. За 2-4 часа напишете инит нужной периферии, потом распишете ее работу, а далее уже будете, как функции использовать. Для работы с теми же дисплеями на spi, CMSIS, как никогда кстати). Там HAL в скорости проигрывает далеко не в 2 раза.

    • @yuribochkarev4477
      @yuribochkarev4477 2 роки тому +2

      @@Solderingironspb инициализацию переферии делать на HAL в конфигураторе cube, а реализацию методов уже на cmsis. Иначе только жить в обнимку с этим референс мануалом и ловить бесконечные ошибки-проблемы при инициализации

    • @Solderingironspb
      @Solderingironspb  2 роки тому

      Можно и так

    • @vicgreen1413
      @vicgreen1413 2 роки тому

      @@Solderingironspb А еще лучше перемолоть то, что выдает HAL или LL и тогда наступит счастье. Код становиться понятным и предсказуемым

  • @DufisAlpano
    @DufisAlpano 2 дні тому

    Нет в инете нормального начала для прграммирования! Попробуйте объяснить программирование так, как дети изучают жизнь, а именно они сперва копируют всё что видят, строят кубики, пирамидки а уж потом от простого к сложному постигают основы жизни, идут в школу, идут в вузы. А по ходу всё обучение в инете показывают типа как студенты вышки пишут интегралы, а что, зачем, большинству туго доходит. Потому как никто не задумывается о том как он доносит инфу

  • @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 а я как то случайно заметил. и сначала долго не мог понять как же так