STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
[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 нет.
Стандартные периферийные драйвера(Standard Peripherals Library Drivers) - это по сути и есть Standard Peripheral Libraries(SPL), потому что кроме этих драйверов в SPL ничего больше и нет. Соответственно в папке StdPeriph_Driver находится SPL, если скачать SPL от ST, то в архиве эта папка будет на одном уровне с папкой CMSIS. Это две разные либы, внутри CMSIS никакой SPL нет.
- Реклама
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
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.
Сама же CMSIS предлагает к использованию уж RTE драйвера (директория RTE_Driver в CMSIS), которые я и назвал "более высокоуровневыми", чем SPL.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Вторую часть делает производитель чипа. В случае с STM те самые пресловутые индусы. И её можно смело выкинуть, оставив только заголовочный файл, описывающий регистры микроконтроллера.Библиотека 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).
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
VladislavS, а потом начинаются вопросы о том, что не работает. Потому что человек не заглянул в какой-то ERRATA или пропустил сноску в даташит, а рабочий пример из SPL он, следуя подобным рекомендациям удалил. И заголовочные файлы SPL тоже нередко полезны и богаты комментариями.
- afz
- Опытный кот
- Сообщения: 744
- Зарегистрирован: Сб дек 22, 2012 08:17:42
- Откуда: Караганда, Казахстан
Re: STM32 новичку в ARM что к чему
Коллеги, вы не забыли, что SPL "сняты с вооружения"? Для старых чипов они еще есть (сохранились), а к новым нет, и не будет. Производитель рекомендует собирать софтину из кубиков и пользовать дровишки HAL/LL. Нет, конечно, CMSIS никто не отменял, но даже банальный запуск тактирования всего, что нужно, напоминает закат Солнца вручную - коллега dosikus публиковал с подробностями этот кусок для F407, я думаю, он напомнит...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[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]Вообще изи. Заходишь в куб, там есть схема тактирования, натыкиваешь в ней нужную конфигурацию
Затем открываешь RM и пишешь по типовому шаблону.
Например, для F427
Или для F303
Или зтёртый до дыр F103
Или простенький L053
и т.д. ...
Всё по одному принципу. Делается один раз для нового чипа, а потом CTRL-C CTRL-V из проекта в проект.
[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]Вообще изи. Заходишь в куб, там есть схема тактирования, натыкиваешь в ней нужную конфигурацию
Спойлер
Например, для 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Спойлер
Код: Выделить всё
// Настройка 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;
Спойлер
Код: Выделить всё
// Настройка 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;Спойлер
Код: Выделить всё
// Настройка 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
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
VladislavS, всего месяц назад обсуждали способы обхода баги в некоторых stm8, возникающей в первой операции деления, если операция деления была прервана дважды. Сначала в основной программе, затем в предыдущем обработчике прерывания.
А с Вашим чисто теоретическим подходом к обучению ни один методист не согласится. Эффективность обучения возрастает в разы, если чтение теории совмещается с разбором практических примеров использования этой теории.
Ну и несмотря на индийский код SPL, он все же соответствует определенным стандартам. И уж лучше начинающему использовать эти стандарты, чем лепить свой код мусорного и неоднозначного вида.
afz, а разве для новых чипов SPL перестали включать в CMSIS? Только RTE драйвера с оверхедом предлагают?
А с Вашим чисто теоретическим подходом к обучению ни один методист не согласится. Эффективность обучения возрастает в разы, если чтение теории совмещается с разбором практических примеров использования этой теории.
Ну и несмотря на индийский код SPL, он все же соответствует определенным стандартам. И уж лучше начинающему использовать эти стандарты, чем лепить свой код мусорного и неоднозначного вида.
afz, а разве для новых чипов SPL перестали включать в CMSIS? Только RTE драйвера с оверхедом предлагают?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[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]Хм, после этого я теоретик. Ну, ну...
[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
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
VladislavS, так код обхода этой баги и был обнаружен в SPL. А потом уже я отыскал соответствующую ERRATA
Вы предлагаете приступать к практике без изучения примеров кода, ориентируясь только на теорию. Это и есть чисто теоретическая методология, неприемлемая в педагогике.
И не углублялась в демагогию, пожалуйста. Речь была исключительно об изучении кода SPL. Об использовании SPL в качестве библиотеки, а тем более о HAL, я однозначно высказал свое мнение выше.
Вы предлагаете приступать к практике без изучения примеров кода, ориентируясь только на теорию. Это и есть чисто теоретическая методология, неприемлемая в педагогике.
И не углублялась в демагогию, пожалуйста. Речь была исключительно об изучении кода SPL. Об использовании SPL в качестве библиотеки, а тем более о HAL, я однозначно высказал свое мнение выше.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704584#p3704584"]VladislavS, так код обхода этой баги и был обнаружен в SPL. А потом уже я отыскал соответствующую ERRATA[/uquote]Лишнее подтверждение ошибочности подхода. Errata изучается до рисования схемы на этапе выбора чипа. Там и написано как обходить. Никакой SPL для этого не нужен.
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
VladislavS, "кто из вас без греха, первый брось на неё камень" (с)
Хорошо, что такого ангела, как Вы, тогда там не оказалось )))
Методология стандартна:
1. Изучение теории
2. Изучение практических примеров применения этой теории
3. Практика.
Вы же исключаете второй пункт, предлагая приступать к практике сразу после теории. Я ни разу еще не встречал человека, который мог изучить теорию так, чтобы он усвоил ее в стопроцентном объеме. Вы, видимо, будете первым )))
Разбор практических примеров применения теории позволяет намного лучше эту теорию понимать и усваивать. Я даже не представляю, насколько медленно Вы обучаетесь, исключая для себя этот этап.
Заметьте, что путь:
1. Обнаружение баги
2. Изучение кода, в котором эта бага не проявляется
3. Поиск теории, описывающей наличие и способы обхода этой баги
оказался существенно короче и эффективней, чем повтороное изучение всей теории, без понимания, в каких же случаях результат работы обработчика прерывания неправильный. Особенно, когда это возникает при очень редком стечении обстоятельств и поймать его в дебагере мало реально.
Хорошо, что такого ангела, как Вы, тогда там не оказалось )))
Методология стандартна:
1. Изучение теории
2. Изучение практических примеров применения этой теории
3. Практика.
Вы же исключаете второй пункт, предлагая приступать к практике сразу после теории. Я ни разу еще не встречал человека, который мог изучить теорию так, чтобы он усвоил ее в стопроцентном объеме. Вы, видимо, будете первым )))
Разбор практических примеров применения теории позволяет намного лучше эту теорию понимать и усваивать. Я даже не представляю, насколько медленно Вы обучаетесь, исключая для себя этот этап.
Заметьте, что путь:
1. Обнаружение баги
2. Изучение кода, в котором эта бага не проявляется
3. Поиск теории, описывающей наличие и способы обхода этой баги
оказался существенно короче и эффективней, чем повтороное изучение всей теории, без понимания, в каких же случаях результат работы обработчика прерывания неправильный. Особенно, когда это возникает при очень редком стечении обстоятельств и поймать его в дебагере мало реально.
Re: STM32 новичку в ARM что к чему
[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.
Cама ST в доках к SPL позиционирует его как нечто находящееся уровнем выше CMSIS.

Формально SPL мог бы быть частью CMSIS Driver, но там универсальный API, а у SPL/HAL/LL свои с ним не совместимые API.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
ПростоНуб, бред какой-то. Сам можешь хоть в туалет по методичке ходить, а на меня свои фантазии не распространяй.
Re: STM32 новичку в ARM что к чему
ПростоНуб, Vladislav , уже подсказал что вам нужно осознать - сходите на сайт арм, там увидите что первостепенно и архиважно. Индусы из стм просто неуспевают исправлять ошибки, в то время как CMSIS незыблема.
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
dosikus, нравится Вам изучать работу с периферией по RTE драйверам CMSIS, написанными теми же индусами - пожалуйста. Мазохизм не запрещен)))
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
ПростоНуб, зачем ковыряться в индусокоде SPL или кала, если есть сниппеты? Они, понятное дело, только под STM32F0, но путем несложного чтения даташита и мануала можно под нужную линейку переделать.
И хватит уже путать SMSIS и кал! Базовый SMSIS — просто набор хидеров для ARM'яней! Для поддержки конкретных камней нужно откуда-нибудь (хоть из того же SPL) выдрать заголовочные файлы с определениями регистров. Здесь у меня можно увидеть, что я именно так и поступил: заголовочные файлы под конкретные камни выдрал из SPL, добавив туда заголовочники для определенных линеек и базовые макросы для ногодрыга.
Ах, да: забыл еще про стартап (который был выдран из opencm3 и малость подправлен) и ld-скрипт (оттуда же, но тоже иной раз приходится новые секции добавлять для возможности эмуляции EEPROM во флеш-памяти).
И хватит уже путать SMSIS и кал! Базовый SMSIS — просто набор хидеров для ARM'яней! Для поддержки конкретных камней нужно откуда-нибудь (хоть из того же SPL) выдрать заголовочные файлы с определениями регистров. Здесь у меня можно увидеть, что я именно так и поступил: заголовочные файлы под конкретные камни выдрал из SPL, добавив туда заголовочники для определенных линеек и базовые макросы для ногодрыга.
Ах, да: забыл еще про стартап (который был выдран из opencm3 и малость подправлен) и ld-скрипт (оттуда же, но тоже иной раз приходится новые секции добавлять для возможности эмуляции EEPROM во флеш-памяти).
Re: STM32 новичку в ARM что к чему
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704833#p3704833"]dosikus, нравится Вам изучать работу с периферией по RTE драйверам CMSIS, написанными теми же индусами - пожалуйста. Мазохизм не запрещен)))[/uquote]
Ну во первых изучать работу периферии по чьей-то писанине , само по себе полный бред.
Это прерогатива выходцев с ПС кодинга.
Периферия изучается по документации производителя....
Кстати RTE драйвера это блажь кайло чисто...
А CMSIS это и не драйвера и не либа, это стандарт для писателей дров. Ощутите разницу...
Ну во первых изучать работу периферии по чьей-то писанине , само по себе полный бред.
Это прерогатива выходцев с ПС кодинга.
Периферия изучается по документации производителя....
Кстати RTE драйвера это блажь кайло чисто...
А CMSIS это и не драйвера и не либа, это стандарт для писателей дров. Ощутите разницу...
Последний раз редактировалось dosikus Сб сен 21, 2019 18:48:38, всего редактировалось 1 раз.
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
Eddy_Em, поясните связь между RTE драйверами CMSIS и HAL. И изучать МК переделевыя то, что написано для одного МК под другой - это уже практика, до которой и следует разобрать теорию на примерах. А у Вас какой-то замкнутый круг получается: сначала переделать, а потом изучать )))
Re: STM32 новичку в ARM что к чему
ПростоНуб, у вас каша в голове.
CMSIS это стандарт описания работы с периферией.
RTE это либы и прерогатива кайла.
То что вы называете практикой - повсеместно -глупое тырканье с такими же глупыми ошибками и вопросами.
Если индивидиум не знает периферии он и в спл и калокубе будет только тыкаться ...
CMSIS это стандарт описания работы с периферией.
RTE это либы и прерогатива кайла.
То что вы называете практикой - повсеместно -глупое тырканье с такими же глупыми ошибками и вопросами.
Если индивидиум не знает периферии он и в спл и калокубе будет только тыкаться ...
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: STM32 новичку в ARM что к чему
dosikus, простите, но каша в голове у Вас. Почитайте внимательно, что входит в состав CMSIS. Там далеко не только CMSIS-Core. На данный момент обсуждается Driver компонент, который по утверждению многих, чем то лучше в CMSIS, чем в SPL для STM32. Для конкретики я рассматриваю STM32F10x. И вижу в CMSIS только два варианта драйверов. Один когруэнтный SPL, а второй - RTE. Так о каких драйверах тогда речь?
А обсуждать различие заголовочных файлов в CMSIS и SPL вообще бессмысленно, так как SPL пользуется заголовочными файлами CMSIS
А обсуждать различие заголовочных файлов в CMSIS и SPL вообще бессмысленно, так как SPL пользуется заголовочными файлами CMSIS


