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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

СКАЗОЧНИК писал(а):Теперь смотрю в код и вообще ничего не понимаю.
Вот поэтому лучше писать используя SPL или в крайнем случае HAL.
Через время код лучше читается и его проще переносить на другие МК.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 363
Зарегистрирован: Вс мар 03, 2019 08:18:34
Откуда: Волгоград

Сообщение do-vitas »

Про LL забыли что ли!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7058
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3892425#p3892425"]:shock: И все?
Этот есть у меня.. Неужели все так просто?[/uquote]
Если упрощенно, то CMSIS всего лишь список регистров микроконтроллера и битов в них с названиями, для обращения к этим самым регистра и битам по именам определенным в подключаемых файлах. Для STM32F303CB это файл stm32f303xc.h. Оформлено в виде структур, обращаясь к элементам которых можно настраивать регистры по своему желанию.

Ничего особенного в этом нет, собстна. В средах программирования для PIC или AVR тоже никто не пишет адреса регистров в шешнадцатеричных кодах для обращения к ним.

Плохо то, что названия регистров в файлах CMSIS не всегда совпадают с названиями из RM.
Астролябия-сама меряет, было бы что мерять!!!
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Ага, я вспомнил про этот файл. Уже пролистал его. Спасибо. ) Из него и брал все в соответствии с РМ. Может и не совпадают, но мне пока не мешает такое.

Добавлено after 8 hours 21 minute 15 seconds:
Я понял и вспомнил, что Систик таймер не описан в РМ (на Ф103) тогда, когда не нашел про него даже в содержании... Он общий для всех семейств кортексов. Не могу вспомнить, где про него читал. Где его регистры описаны?
Станислав
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Тяжело, наверное, с банов в гугле жить? systick
В Cortex®-M3 programming manual он описан.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 363
Зарегистрирован: Вс мар 03, 2019 08:18:34
Откуда: Волгоград

Сообщение do-vitas »

Я тоже недавно начал изучать stm создаю проект в кубе потом открываю в кейле, там уже все библиотеки есть открываешь их и читаешь какие функции как работают, какие переменные передают! последнее время если использую библиотеку LL это некий компромис между высоким и низким уровнями!
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3892928#p3892928"]В Cortex®-M3 programming manual он описан.[/uquote]

Нет. ))) Мне нравится когда вы мне помогаете! :)))

Добавлено after 50 minutes 9 seconds:
Исправил и запустил старый проект с часиками (секундами). ) Запустил RTC. Уже доволен. Но осталась кучка вопросов... Если сам не допетрю, то выложу код и спрошу здесь.
Спасибо, что помогаете. )
Станислав
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Правильно ли я перевел, МК всегда запускается по умолчанию на внутренней HSI 8 МГц? Или его тоже надо запускать... А то я как-то настроил RTC, и работает, но сводится к тому, что он весь тактируется от этого RTC.

Добавлено after 25 minutes 41 second:
А... ну логично. Как же он мне тогда настраивать RTC, если тактирования не будет... Т.е. Я могу тупо оставить как есть? Или мне все же надо пропускать (настраивать) через деление на 2 HSI для того, чтобы PLL использовать? Или у меня МК просто по умолчанию на 8 МГц работает?

Добавлено after 1 minute 6 seconds:
Все. туплю. Посмотрел картинку. ТАм можно PLL не использовать. По умолчанию сразу такты идут на шины. Трапецией на схеме мультиплексор обозначен?

Добавлено after 38 minutes 12 seconds:
Прошу прощение за тупые вопросы.. Но вот тут нашел:
7.2.6 System clock (SYSCLK) selection
After a system reset, the HSI oscillator is selected as system clock. When a clock source is
used directly or through the PLL as system clock, it is not possible to stop it.

После сброса системы, внутренний высокочастотный генератор выбран как системный (тактирование). Когда источник тактов выбран напрямую или через ФАПЧ как системные часы, то его больше невозможно остановить.

Так если он выбран по умолчанию, как же тогда настройки происходят, если его невозможно остановить (изменить). Или я что-то не то понимаю?

Или он все же не выбран, а только флеш тактирует для программирования? А в качестве системного его еще включить надо? :dont_know: :facepalm:
Станислав
Друг Кота
Аватара пользователя
Сообщения: 7383
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Его нельзя остановить, пока он используется (не важно, прямо или через PLL). Переключитесь на кварцевый генератор - тогда сможете его выключить.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

а.. вот так понятнее. )) Т.е. нельзя остановить, если нет никакого другого. Вот так надо было и писать по-английски...

Добавлено after 1 minute 40 seconds:
Правильно ли я понимаю по схеме 8 в РМ, что он подается на мультиплексор и по умолчанию выбран для тактирования всего? Или этот мультипрексор тоже надо включить? там есть сверху такая аббревиатура как SW.
Станислав
Друг Кота
Аватара пользователя
Сообщения: 7058
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Очевидно, что изначально все нужное уже включено для тактирования от внутреннего генератора, если какая-нибудь "мигалка" зашитая в МК успешно дергает ногами без всяких настроек RTC.

Кстати, аварийный переход на тактирование от внутреннего генератора вроде бы тоже включен по умолчанию. Сейчас вот прямо выдергиваю кварц 4 МГц из макетки, и подключенный к МК светодиод тут же начинает моргать с удвоенной частотой. Втыкаю кварц обратно, снова переходит на тактирование от кварцевого осциллятора. В STM8 так не было, там после аварийного переключения на внутренний генератор нужно было сбросить МК, чтобы заставить его снова работать с кварцем.
Последний раз редактировалось Asmodey Ср сен 16, 2020 18:17:06, всего редактировалось 1 раз.
Астролябия-сама меряет, было бы что мерять!!!
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Ну... у меня как раз RTC полностью настроены. А вот HSI и HSE абсолютно нет. ))) Может поэтому такие глупые вопросы получаются.

Добавлено after 57 seconds:
Это на каком МК?
Станислав
Друг Кота
Аватара пользователя
Сообщения: 7058
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

F303CB
Астролябия-сама меряет, было бы что мерять!!!
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

На блюпилл не смогу проверить. Там кварц припаяный. )))
Станислав
Друг Кота
Аватара пользователя
Сообщения: 7058
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Для STM32F103 смотрите в даташите описание регистра Clock configuration register (RCC_CFGR), биты 1:0, это и должно быть то самое SW коммутирующее источники тактового сигнала.

Я как раз этот регистр ковыряю для F303, пытаюсь изменить коэффициенты умножения PLL. Пока не получается.

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3893443#p3893443"]На блюпилл не смогу проверить. Там кварц припаяный. )))[/uquote]
Палец послюнявить и ткнуть им в выводы кварца. Кварцевый генератор заглохнет.
Астролябия-сама меряет, было бы что мерять!!!
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

О! спасибо!

Добавлено after 49 minutes 13 seconds:
Докапался до
7.3.2 Clock configuration register (RCC_CFGR)

Написано, что :

Bits 1:0 SW: System clock switch
Set and cleared by software to select SYSCLK source.
Set by hardware to force HSI selection when leaving Stop and Standby mode or in case of
failure of the HSE oscillator used directly or indirectly as system clock (if the Clock Security
System is enabled).
00: HSI selected as system clock
01: HSE selected as system clock
10: PLL selected as system clock
11: not allowed

Как я понимаю, сам автоматом выбирает HSI если выходит из различных режимов энергосбережения, либо сбоя HSE (если был включен CSS).
Но не написано, что он по умолчанию при включении МК выбирается. Или я опять чего-то недопонимаю. Или при сбросе МК.

З.Ы. я даже законспектировал все биты этого регистра, впрочем, как и других, которые мне нужны для настройки тактирования.

Добавлено after 58 seconds:
АААА! Там же в самом начале его значение при сбросе!!!! Дошло!

Добавлено after 26 seconds:
Reset value: 0x0000 0000 :music: :write:
Станислав
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

И я понял, что в качестве системных тактов может быть выбран только HSI, HSE или PLL. Никакие вторичные LSE, LSI не могут быть системными тактами, а только для независимого вотчдога, RTC или для выхода из режима сна. Да и на схеме это нарисовано.
Станислав
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Объясните, кто знает, плс, почему в неблокирующую функцию

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

HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
указатель на буфер pData передается без модификатора volatile ? Чет это на какой-то зашквар смахивает.
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Зачем здесь volatile?
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Затем, что буфер модифицируется извне исполняемого кода.
Ответить

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