STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Eddy_Em, у Вас переполение, как Вы сами выразились, так что войду в положение.
CMSIS включает в себя кроме драйверов переферии еще кучу кода, например, для того же RTOS. Он откровенно избыточен, если я не собираюсь вообще пользоваться стандартными библиотеками. Тогда как SPL ограничивается только CMSIS-Core и драйверами переферии, занимая в два раза меньше места, чем CMSIS. А значит grep по нему ищет в два раза быстрее.
Если же говорить о непосредственно коде для работы с переферией, то, по крайней мере у ST, я различий между CMSIS и STL еще ни разу не обнаружил. Код идентичен. И если он Вам не нравится в SPL, то почему тот же самый код нравится в CMSIS - для меня загадка )))
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Reflector писал(а):5 шт. STM32L011D3P6 - $4.81.
Дорогущие — если сравнивать с STM8S003 или ARM'ами (посмотрите, почем на али STM32F030 в 20-ногом корпусе).
Но с точки зрения энергопотребления — да, из маложрущих они почти самые дешевые.
ПростоНуб писал(а):CMSIS включает в себя кроме драйверов переферии еще кучу кода, например, для того же RTOS.
Где здесь ртось? Что за чушь?
Естественно, под CMSIS имеется в виду базовый набор заголовочных файлов для ARM, безо всяких там ртосей и прочего мусора!
ПростоНуб писал(а):я различий между CMSIS и SPL еще ни разу не обнаружил
Ну ничего ж себе: есть разница между REG1 = VAL1,… REGN=VALN или struct.field1 = x,… struct.fieldn = y, initSMTH(&struct)?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3704171#p3704171"]Дорогущие — если сравнивать с STM8S003 или ARM'ами (посмотрите, почем на али STM32F030 в 20-ногом корпусе).[/uquote]
И зачем сравнивать STM32L с STM8S? $1.17 - это фактически цена по которой продают F103 или F072, с мелкими корпусами похуже, то мелкий STM8L тоже стоит ~$0.5, так что на любительском уровне я никакой особой дороговизны не вижу.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704146#p3704146"]CMSIS включает в себя кроме драйверов переферии еще кучу кода, например, для того же RTOS. Он откровенно избыточен, если я не собираюсь вообще пользоваться стандартными библиотеками. Тогда как SPL ограничивается только CMSIS-Core и драйверами переферии, занимая в два раза меньше места, чем CMSIS. А значит grep по нему ищет в два раза быстрее.[/uquote]
SPL не просто юзает только CMSIS-Core, если списать SPL от ST, то там кроме CMSIS-Core есть разве что один мелкий хедер для RTOS. Более того в том-же visualgdb, которым я пользуюсь, все то же самое, потому после удаления HAL/SPL остается лишь CMSIS-Core. Дальше я обычно еще удаляю лишние файлы и в типичном проекте остается ~4 файла:

Код: Выделить всё

stm32f3xx.h
stm32f303xc.h
cmsis_gcc.h
core_cm4.h
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Reflector, я не знаю о чем Вы, но если скачать, для пример SPL и CMSIS для STM32F10x, то в содержимое директорий STM32F10x_StdPeriph_Driver\inc и STM32F10x_StdPeriph_Driver\src в SPL идентично содержимому директорий StdPeriph_Driver\inc и StdPeriph_Driver\src в CMSIS.
А разбираться с конкретным железом через SPL код намного проще, чем через код RTE драйвера.
А вот содержимое STM32F10x_StdPeriph_Driver\inc (или идентичного StdPeriph_Driver\inc) очень удобно и полезно при написании собственного кода. Совершенно зря Вы его выкидываете.
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Аватара пользователя
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Сообщение Myp3ik »

ПростоНуб, а Вы случаем CMSIS и HAL не перепутали ? CMSIS - это набор низкоуровневых библиотек от ARM.
Иван Сусанин - первый полупроводник :solder:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Myp3ik, читайте внимательней. Я именно это и писал, что в SPL и CMSIS стандартные переферийные драйвера идентичны, но в CMSIS так же есть RTE драйвера, RTOS, DSP и NN. HAL тут вообще при чем?
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704316#p3704316"]Я именно это и писал, что в SPL и CMSIS стандартные переферийные драйвера идентичны, но в CMSIS так же есть RTE драйвера, RTOS, DSP и NN.[/uquote]
Стандартные периферийные драйвера(Standard Peripherals Library Drivers) - это по сути и есть Standard Peripheral Libraries(SPL), потому что кроме этих драйверов в SPL ничего больше и нет. Соответственно в папке StdPeriph_Driver находится SPL, если скачать SPL от ST, то в архиве эта папка будет на одном уровне с папкой CMSIS. Это две разные либы, внутри CMSIS никакой SPL нет.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Reflector, распакуйте CMSIS, например, Keil.STM32F1xx_DFP.2.3.0.pack, архиватором и увидите в папке Device\StdPeriph_Driver будут директории inc и src идентичные одноименным директориям из STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver
Сама же CMSIS предлагает к использованию уж RTE драйвера (директория RTE_Driver в CMSIS), которые я и назвал "более высокоуровневыми", чем SPL.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Библиотека CMSIS включает в себя следующие компоненты:

CMSIS-CORE: API для ядра Cortex-M и периферии. Стандартизированный интерфейс доступен для Cortex-M0, Cortex-M3, Cortex-M4, SC000, и SC300. Включает дополнительные SIMD-инструкции для Cortex-M4.
CMSIS-Driver: определяет основные драйверы интерфейсов периферии. Содержит API для операционных систем реального времени (ОСРВ, или англ. Real-Time operating systems — RTOS) и соединяет микроконтроллер с промежуточным ПО (стек коммуникации, файловая система или графический интерфейс).
CMSIS-DSP: коллекция из более чем 60 функций для различных типов данных (относятся к обработке сигналов): с фиксированной точкой и с плавающей точкой (одинарной точности, 32 бита). Библиотека доступна для Cortex-M0, Cortex-M3, и Cortex-M4. Реализация библиотеки для Cortex-M4 оптимизирована c использованием SIMD-инструкций.
CMSIS-RTOS API: общий API для систем реального времени. Используя функции данного интерфейса вы можете отойти от конкретной реализации операционной системы.
CMSIS-DAP (Debug Access Port): стандартизованное программное обеспечение для отладчика (Debug Unit).
Вторую часть делает производитель чипа. В случае с STM те самые пресловутые индусы. И её можно смело выкинуть, оставив только заголовочный файл, описывающий регистры микроконтроллера.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

VladislavS, а потом начинаются вопросы о том, что не работает. Потому что человек не заглянул в какой-то ERRATA или пропустил сноску в даташит, а рабочий пример из SPL он, следуя подобным рекомендациям удалил. И заголовочные файлы SPL тоже нередко полезны и богаты комментариями.
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Коллеги, вы не забыли, что SPL "сняты с вооружения"? Для старых чипов они еще есть (сохранились), а к новым нет, и не будет. Производитель рекомендует собирать софтину из кубиков и пользовать дровишки HAL/LL. Нет, конечно, CMSIS никто не отменял, но даже банальный запуск тактирования всего, что нужно, напоминает закат Солнца вручную - коллега dosikus публиковал с подробностями этот кусок для F407, я думаю, он напомнит...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704433#p3704433"]VladislavS, а потом начинаются вопросы о том, что не работает.[/uquote]Только почему-то, почитаешь форум и 9 из 10 вопросов имеет классический вид: вот моя грязная портянка на HAL/SPL/LL (нужное подчеркнуть) почему-то не работает.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704433#p3704433"]Потому что человек не заглянул в какой-то ERRATA[/uquote]При этом о существовании errata и вовсе не подозревают. Да я и не припомню на форуме хоть одну тему, где проблема вопрошающего была бы из errata.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704433#p3704433"]или пропустил сноску в даташит,[/uquote]Такое бывает, но с опытом обычно проходит. Намного чаще попадаются не читавшие RM вовсе.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704433#p3704433"]а рабочий пример из SPL он, следуя подобным рекомендациям удалил.[/uquote]Я краем глаза видел код Reflector. От рекомендации ему пользоваться SPL я чуть со смеху не умер.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704433#p3704433"]И заголовочные файлы SPL тоже нередко полезны и богаты комментариями.[/uquote]Лишней информации, конечно, не бывает, но лучше потратить время на RM и отладчик.

Добавлено after 1 hour 45 minutes 36 seconds:
[uquote="afz",url="/forum/viewtopic.php?p=3704491#p3704491"]но даже банальный запуск тактирования всего, что нужно, напоминает закат Солнца вручную -[/uquote]Вообще изи. Заходишь в куб, там есть схема тактирования, натыкиваешь в ней нужную конфигурацию
СпойлерИзображение
Untitled.png
(149.99 КБ) 516 скачиваний
Затем открываешь RM и пишешь по типовому шаблону.
Например, для F427
Спойлер

Код: Выделить всё

  // Настройка FLASH
  FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_5WS;  
  // ------------------ Тактирование -------------------------
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON; //Включаем HSE = 8 MHz
  while(!(RCC->CR & RCC_CR_HSERDY));  //Ждём включения HSE
  //Задаём источники тактирования и прескалеры  SYSCLK = 168 МГц  USB = 48 МГц
  RCC->PLLCFGR = _VAL2FLD(RCC_PLLCFGR_PLLQ,7) | RCC_PLLCFGR_PLLSRC_HSE | RCC_PLLCFGR_PLLP_div2 | 
                 _VAL2FLD(RCC_PLLCFGR_PLLN,168) | _VAL2FLD(RCC_PLLCFGR_PLLM,4);
  RCC->CFGR = RCC_CFGR_MCO2_HSE | RCC_CFGR_MCO2PRE_div1 | RCC_CFGR_MCO1PRE_div1 | RCC_CFGR_I2SSRC_PLLI2S | RCC_CFGR_MCO1_HSE | 
              RCC_CFGR_PPRE2_DIV2 | RCC_CFGR_PPRE1_DIV4 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_HSI;
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON | RCC_CR_PLLON; //Включаем PLL
  while(!(RCC->CR & RCC_CR_PLLRDY));  //Ждём включения PLL
  //Переключаемся на PLL с установленнными ранее прескалерами
  RCC->CFGR = RCC_CFGR_MCO2_HSE | RCC_CFGR_MCO2PRE_div1 | RCC_CFGR_MCO1PRE_div1 | RCC_CFGR_I2SSRC_PLLI2S | RCC_CFGR_MCO1_HSE | 
              RCC_CFGR_PPRE2_DIV2 | RCC_CFGR_PPRE1_DIV4 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSEON | RCC_CR_PLLON; //Выключаем HSI
Или для F303
Спойлер

Код: Выделить всё

  // Настройка FLASH
  FLASH->ACR = FLASH_ACR_PRFTBE | _VAL2FLD(FLASH_ACR_LATENCY,2);  
  // ------------------ Тактирование -------------------------
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON; //Включим HSE
  while(!(RCC->CR & RCC_CR_HSERDY)); //Ждём включения HSE
  //Задаём источники тактирования и прескалеры
  RCC->CFGR = RCC_CFGR_MCO_NOCLOCK | RCC_CFGR_I2SSRC_SYSCLK | RCC_CFGR_USBPRE_DIV1_5 | RCC_CFGR_PLLMUL9 |
              RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV2 |  //Раскомментировать для кварца 16 МГц
              RCC_CFGR_PLLSRC_HSE_PREDIV | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_HSE;
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_PLLON | RCC_CR_HSEON; //Включим PLL, выключим HSI
  while(!(RCC->CR & RCC_CR_PLLRDY)); //Ждём включения PLL
  //Переключаемся на PLL с установленнными ранее прескалерами  
  RCC->CFGR = RCC_CFGR_MCO_NOCLOCK | RCC_CFGR_I2SSRC_SYSCLK | RCC_CFGR_USBPRE_DIV1_5 | RCC_CFGR_PLLMUL9 | 
              RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV2 | //Раскомментировать для кварца 16 МГц
              RCC_CFGR_PLLSRC_HSE_PREDIV | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
Или зтёртый до дыр F103
Спойлер

Код: Выделить всё

  // Настройка FLASH
  FLASH->ACR = FLASH_ACR_PRFTBE | _VAL2FLD(FLASH_ACR_LATENCY,2);    
  // ------------------ Тактирование -------------------------
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON; //Включаем HSE
  while(!(RCC->CR & RCC_CR_HSERDY));       //Ждём пока запустится HSE
  //Задаём источники тактирования и прескалеры 
  // SYSCLK = 72 МГц, USB = 48 МГц, PCLK1 = 36 МГц, PCLK2 = 72 МГц,  ADC = 12 МГц  
  RCC->CFGR = RCC_CFGR_MCO_NOCLOCK | RCC_CFGR_USBPRE_1d5 | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_ADCPRE_DIV6 |  
              //RCC_CFGR_PLLXTPRE | // Раскомментировать для кварца 16 МГц
              RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_HSE;
  RCC->CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSEON | RCC_CR_PLLON; // Включаем PLL, выключаем HSI
  while(!(RCC->CR & RCC_CR_PLLRDY));            // Ждём пока запустится PLL
  //Переключаемся на PLL с установленнными ранее прескалерами
  RCC->CFGR = RCC_CFGR_MCO_NOCLOCK | RCC_CFGR_USBPRE_1d5 | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_ADCPRE_DIV6 | 
              //RCC_CFGR_PLLXTPRE | // Раскомментировать для кварца 16 МГц
              RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
Или простенький L053
Спойлер

Код: Выделить всё

  // Настройка FLASH  
  FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY;  
  // ------------------ Тактирование -------------------------
  RCC->CR = RCC_CR_MSION | RCC_CR_HSION;  //Включим HSI16
  while(!(RCC->CR&RCC_CR_HSIRDY));  
  RCC->CFGR = RCC_CFGR_MCOPRE_DIV1 | RCC_CFGR_MCO_NOCLOCK | RCC_CFGR_PLLDIV2 | RCC_CFGR_PLLMUL4 | RCC_CFGR_PLLSRC_HSI |
              RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV1 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_HSI;
  RCC->CR = RCC_CR_HSION | RCC_CR_PLLON;  //Включим PLL, выключим MSI
  while(!(RCC->CR&RCC_CR_PLLRDY));
  RCC->CFGR = RCC_CFGR_MCOPRE_DIV1 | RCC_CFGR_MCO_NOCLOCK | RCC_CFGR_PLLDIV2 | RCC_CFGR_PLLMUL4 | RCC_CFGR_PLLSRC_HSI |
              RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV1 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
и т.д. ...

Всё по одному принципу. Делается один раз для нового чипа, а потом CTRL-C CTRL-V из проекта в проект.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

VladislavS, всего месяц назад обсуждали способы обхода баги в некоторых stm8, возникающей в первой операции деления, если операция деления была прервана дважды. Сначала в основной программе, затем в предыдущем обработчике прерывания.

А с Вашим чисто теоретическим подходом к обучению ни один методист не согласится. Эффективность обучения возрастает в разы, если чтение теории совмещается с разбором практических примеров использования этой теории.
Ну и несмотря на индийский код SPL, он все же соответствует определенным стандартам. И уж лучше начинающему использовать эти стандарты, чем лепить свой код мусорного и неоднозначного вида.

afz, а разве для новых чипов SPL перестали включать в CMSIS? Только RTE драйвера с оверхедом предлагают?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704558#p3704558"]VladislavS, всего месяц назад обсуждали способы обхода баги в некоторых stm8, возникающей в первой операции деления, если операция деления была прервана дважды. Сначала в основной программе, затем в предыдущем обработчике прерывания.[/uquote]Каким образом SPL поможет это обойти?

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704558#p3704558"]А с Вашим чисто теоретическим подходом к обучению ни один методист не согласится.[/uquote]Это у меня то чисто теоретический подход? Я под столом второй раз :) Это не я в прошлом сообщении рекомендовал сесть за отладчик вместо чтения индусского кода? Под спойлером кода тоже не видно?

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704558#p3704558"]Эффективность обучения возрастает в разы, если чтение теории совмещается с разбором практических примеров использования этой теории.[/uquote]Разбирайте, ктож не даёт. Только разбирать HAL это мазохизм.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704558#p3704558"]Ну и несмотря на индийский код SPL, он все же соответствует определенным стандартам. И уж лучше начинающему использовать эти стандарты, чем лепить свой код мусорного и неоднозначного вида.[/uquote]Начинающему надо начинать с азов. Мусор неоднозначного вида можно писать и с библиотеками, какими бы кошерными они ни были.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704558#p3704558"]а разве для новых чипов SPL перестали включать в CMSIS? Только RTE драйвера с оверхедом предлагают?[/uquote]Хм, после этого я теоретик. Ну, ну...
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

VladislavS, так код обхода этой баги и был обнаружен в SPL. А потом уже я отыскал соответствующую ERRATA

Вы предлагаете приступать к практике без изучения примеров кода, ориентируясь только на теорию. Это и есть чисто теоретическая методология, неприемлемая в педагогике.

И не углублялась в демагогию, пожалуйста. Речь была исключительно об изучении кода SPL. Об использовании SPL в качестве библиотеки, а тем более о HAL, я однозначно высказал свое мнение выше.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704584#p3704584"]VladislavS, так код обхода этой баги и был обнаружен в SPL. А потом уже я отыскал соответствующую ERRATA[/uquote]Лишнее подтверждение ошибочности подхода. Errata изучается до рисования схемы на этапе выбора чипа. Там и написано как обходить. Никакой SPL для этого не нужен.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

VladislavS, "кто из вас без греха, первый брось на неё камень" (с)
Хорошо, что такого ангела, как Вы, тогда там не оказалось )))

Методология стандартна:
1. Изучение теории
2. Изучение практических примеров применения этой теории
3. Практика.

Вы же исключаете второй пункт, предлагая приступать к практике сразу после теории. Я ни разу еще не встречал человека, который мог изучить теорию так, чтобы он усвоил ее в стопроцентном объеме. Вы, видимо, будете первым )))

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

Заметьте, что путь:
1. Обнаружение баги
2. Изучение кода, в котором эта бага не проявляется
3. Поиск теории, описывающей наличие и способы обхода этой баги

оказался существенно короче и эффективней, чем повтороное изучение всей теории, без понимания, в каких же случаях результат работы обработчика прерывания неправильный. Особенно, когда это возникает при очень редком стечении обстоятельств и поймать его в дебагере мало реально.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704355#p3704355"]Reflector, распакуйте CMSIS, например, Keil.STM32F1xx_DFP.2.3.0.pack, архиватором и увидите в папке Device\StdPeriph_Driver будут директории inc и src идентичные одноименным директориям из STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver[/uquote]
Cама ST в доках к SPL позиционирует его как нечто находящееся уровнем выше CMSIS.

Изображение

Формально SPL мог бы быть частью CMSIS Driver, но там универсальный API, а у SPL/HAL/LL свои с ним не совместимые API.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

ПростоНуб, бред какой-то. Сам можешь хоть в туалет по методичке ходить, а на меня свои фантазии не распространяй.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

ПростоНуб, Vladislav , уже подсказал что вам нужно осознать - сходите на сайт арм, там увидите что первостепенно и архиважно. Индусы из стм просто неуспевают исправлять ошибки, в то время как CMSIS незыблема.
Ответить

Вернуться в «ARM»