|
0 / 0 / 1
Регистрация: 15.01.2015
Сообщений: 16
|
||||||
Не могу разобраться в настройке тактирования STM3209.05.2017, 13:51. Показов 1503. Ответов 7
Метки нет (Все метки)
Всем доброго для и с праздником Победы. Начал изучать микроконтроллеры STM на примере STM32F103C8T6, и столкнулся с проблемой: не могу нормально настроить тактирование ядра, вроде все делаю по даташиту согласно схеме тактирования МК, и в теории все кажется просто и понятно, однако на практике получить желаемый результат не удается, может кто подскажет что я делаю не так, ниже привожу код с комментариями. Проект собирался в Keil'е uVision5
0
|
||||||
| 09.05.2017, 13:51 | |
|
Ответы с готовыми решениями:
7
Не могу разобраться в настройке STM32 Система тактирования в STM32 у разных таймеров разные источники тактирования? |
|
82 / 80 / 16
Регистрация: 11.03.2016
Сообщений: 206
|
|
| 09.05.2017, 17:41 | |
|
Нежелание использовать STM32CubeMX принципиальное?
Или задача стоит чисто академическая?
0
|
|
|
0 / 0 / 1
Регистрация: 15.01.2015
Сообщений: 16
|
|
| 09.05.2017, 18:23 [ТС] | |
|
Как сказать, во-первых хочется во всем разобраться самому с самых азов, в то время как CubeMX все сделает за меня (я ведь правильно понял что в нем просто надо тыкнуть где и сколько МГц я хочу получить и он уже сгенерирует код за меня), а вторая причина в том, что мне с большой вероятностью скоро нужно будет колдовать над миландровскими МК которые построены на том же ядре, а так как у меня под рукой только STM32 на данный момент, то желательно опять же покопать их без сторонних примочек, чтобы потом не оказаться у разбитого корыта когда выясниться что к миландру нет примочек вообще или есть но другие.
Вообще я так понял косяк или косяки могут идти из-за стандартных примочек от ST, таких как библиотека system startup без которой проект не компилится, хотя и пишут что вроде как можно раскомментировать пару строк в их файлах чтобы получить нужную частоту я так до конца и не понял что это за строки, да и не интересно это))
0
|
|
|
82 / 80 / 16
Регистрация: 11.03.2016
Сообщений: 206
|
|
| 09.05.2017, 18:56 | |
|
Ну дык необязательно использовать нагенерированное кубом в боевом проекте. На нем же можно учиться. Там довольно таки внятная инициализация клоков.
Генерируете Кубом, проверяете, что все заводится. Смотрите на код Куба, смотрите на свой код, потом опять на код куба, потом опять на свой ... И Бах! Озарение! У меня так работает. ![]() Главное, обязательно проверьте, что код Куба заводится. К сожалению, бывают и промашки и магия.
0
|
|
|
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
|
|
| 10.05.2017, 10:00 | |
|
ИМХО: делать код без библиотек, чисто на регистрах, да еще и не используя их мнемонические названия из заголовочного файла, конечно похвально, но боюсь, что здесь ни кто такой подвиг не совершал.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||
| 10.05.2017, 12:48 | ||
|
Не по теме: Представляю как выглядит код настройки ацп или DMA...вообще глаза разбегутся))
0
|
||
|
210 / 163 / 36
Регистрация: 15.11.2012
Сообщений: 788
|
|
| 08.06.2017, 01:06 | |
|
По строке hse_rdy = *(unsigned long*)(0x40021000) & 0x00020000 >> 16;
операция >> имеет приоритет выше &, поэтому ваше выражение фактически получается таким: hse_rdy = *(unsigned long*)(0x40021000) & (0x00020000 >> 16); Бит 0x0002 (HSI_RDY) в RCC_CR первоначально всегда установлен, поэтому проверка сразу проходит, да не та. Я вообще не понимаю зачем вам нужен этот сдвиг - проверяйте просто 0x20000. Когда-то я читал, что тип int для 32-разрядных контроллеров работает быстрее, чем char (фактически он все равно приводится к int, на что тратится время), поэтому hse_rdy вполне можно сделать типом int. Также не понятно, почему вы считаете, что за 12 циклов начальной проверки внешний кварц уже заведется. В datasheet на stm32f103 (раздел электрических параметров, в моем случае страница 53 из 117) сказано про типовое время стабилизации в 2 мс - это явно больше по времени, чем ваши 12 циклов проверки. Теперь о Миландре. Не знаю, какой будете юзать Вы, но мой опыт использования 1986ве1 выявил проблемы в работе с внешней памятью. В Errata этого нет. Добавлено через 11 минут И кстати вот еще: while((*(unsigned long*)(0x40021000) & 0x04000000)); //ждем пока бит PLLRDY регистра RCC_CR установится. //тут есть первая странность, почему-то PLLRDY не устанавливается Тоже ничего странного в принципе, поскольку бит PLLRDY 0x02000000, а не 0x04000000. Добавлено через 4 минуты А поскольку к моменту выполнения строки *(unsigned long*)(0x40021004) |= 0x00000002; //устанавлтваем биты SW регистра RCC_CFGR в 0x10 //что соответствует установке PLL в качестве источника тактирования ни кварц, ни ФАПЧ еще так и не завелся, то она игнорируется. Вот у Вас все и работает на 8 МГц внутреннего клока.
0
|
|
|
16 / 16 / 1
Регистрация: 20.10.2013
Сообщений: 81
|
||
| 20.07.2017, 16:31 | ||
|
Помню я так начинал разработку(как автор) под F100, уххх... Сколько волос я выдрал у себя на голове(и не только)... Потом по касательной работал с STL, потом HAL. Сейчас RTOS учу
Товарищ автор, мой вам совет... Используйте хотя бы ... на скорость это не повлияет, но глаза хоть выедать не будет
0
|
||
| 20.07.2017, 16:31 | |
|
Помогаю со студенческими работами здесь
8
Не могу найти инструкцию по настройке Dlink DVG N5402GF на прошивке от длинка В часности настройке Voip шлюза Не могу разобраться с DFU-bootloader в STM32. Плата видна на USB шине, но dfu-util ее не видит Не могу разобраться с загрузкой данных из файлов,и чтоб в дальнейшем с ними мжно было работать как с массивом,не могу разобраться( Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать Поомгите разобраться с CAN в stm32 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|