Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/89: Рейтинг темы: голосов - 89, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 148

STM32F4 - Тактовая частота ядра Cortex M4

20.09.2012, 02:40. Показов 18297. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Приобрел STM32F4 Dyscovery, помигал светодиодом. Начал разбираться с системой тактирования, сгенерил файлик system_stm32f4xx.c с помощью STM32F4xx_Clock_Confikurotion с HCLK 168Mhz, но в действительности частота в 10 раз меньше, вот код:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stm32f4xx.h>
#include <stm32f4xx_conf.h>
 
#include <stm32f4xx_rcc.h>
#include <stm32f4xx_gpio.h>
 
void Delay(volatile uint32_t nCount) {
for (; nCount != 0; nCount--);
}
 
int main(void) {
SystemInit();
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD , ENABLE);
 
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOD, &GPIO_InitStructure);
 
while (1) {
GPIO_SetByts(GPIOD, GPIO_Pin_12);
Delay(500000);
GPIO_RisetByts(GPIOD, GPIO_Pin_12);
Delay(500000);
}
 
return 0;
}
В итоге частота мигания светодиодом составляет 16.7966Hz! т.е процессор работает с частотой 16.8Mhz вместо 168Mhz.
В качестве источника PLL используется HSE с Dyscovery (8Mhz)
Code
1
2
3
4
5
6
7
8
#define PLL_M      8
#define PLL_N      336
 
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2
 
/* USB OTG FS, SDIO omd RNG Clock =  PLL_VCO / PLLQ */
#define PLL_Q      7
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2012, 02:40
Ответы с готовыми решениями:

STM32F103VE и тактовая частота
Добрый день! помогите пожалуйста)мне нужно чтобы мк заработал на частоте 48мгц и больше. Весь день вчера просидел и под вечер наконец все...

ATiny2313A-PU и тактовая частота
Здравствуйте! Прошу прощение за подробность изложения проблемы, очень хочется разобраться. Это моя первая попытка практической работы с...

ATtiny13A тактовая частота
Всем привет, подскажите сколько тактовая частота у ATtiny13A с заводскими конфигурациями? В даташите сказано 9.6MHz а на деле примерно...

13
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
20.09.2012, 03:14
Под Вашу дискавери есть пакет готовых примеров. В том числе, чтобы и помигать. Насколько я знаю, они уже все на 168 МГц.

Вы уверены полагаете, что Ваш delay() отсчитает от 500000 до нуля за 500000 машинных циклов?
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
20.09.2012, 03:20
вот это
Code
1
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
Прозрачно намекает - "максимальная тактовая частота для ноги будет 100 МегаГерц".
0
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 148
20.09.2012, 10:46
Цитата Сообщение от dymo2611
Под Вашу дискавери есть пакет готовых примеров. В том числе, чтобы и помигать. Насколько я знаю, они уже все на 168 МГц.

Вы уверены полагаете, что Ваш delay() отсчитает от 500000 до нуля за 500000 машинных циклов?
Ну не за 5 000 000 же, 10 циклов на вычитание и сравнение с 0? Многовато
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
20.09.2012, 11:59
Ну у вас во первых цикл ожидания выполняется дважды(это на предмет 10 тактов). Во вторых, даташит http://www.st.com/internet/som... 037051.pdf говорит нам :
Up to 136 fast I/Os up to 84 MHz
, обратите внимание на частоту(up to - не более, не выше чем 84 мегагерца. учитывая что один период сигнала состоит из 2х фаз частота сигнала автоматом падает до 42х мегаГерц при наилучшем раскладе)! В третьих вы юзаете AHB1, а она в 2 раза тормознее AHB2. И неясно как в коде установлены все прескаллеры для шин.
И в последних - хотите померять частоту - поставьте задержку равную 1.
Это все таки не AVR где задержки можно лепить на циклах с нопами потому что количество тактов- тупо фиксировано. Время работы функции помещенной в рам и во флэш - тут будет отличаться. Кстати и в АВР паузы вполне себе делаются на таймерах ( в кортексе тем более - таймеров просто завались).
0
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 148
20.09.2012, 12:28
[QUOTE="botu_dork"]Ну у вас во первых цикл ожидания выполняется дважды(это на предмет 10 тактов).
Во вторых, даташит http://www.st.com/internet/som... 037051.pdf говорит нам : [QUOTE="Цитата:[/QUOTE]
Up to 136 fast I/Os up to 84 MHz
, обратите внимание на частоту(up to - не более, не выше чем 84 мегагерца. учитывая что один период сигнала состоит из 2х фаз частота сигнала автоматом падает до 42х мегаГерц при наилучшем раскладе)! В третьих вы юзаете AHB1, а она в 2 раза тормознее AHB2. И неясно как в коде установлены все прескаллеры для шин.
И в последних - хотите померять частоту - поставьте задержку равную 1.
Это все таки не AVR где задержки можно лепить на циклах с нопами потому что количество тактов- тупо фиксировано. Время работы функции помещенной в рам и во флэш - тут будет отличаться. Кстати и в АВР паузы вполне себе делаются на таймерах ( в кортексе тем более - таймеров просто завались).

Ну на это и было рассчитано. 2*500 000 = 1 000 000/ 168MHz/1 000 000 = ~168Hz - скорость мигания светодиодом, даже до 42MHz очень далеко. На деле же 16.8Hz.
Прескейлеры для шин выставлены, так чтобы все шины работали на максимальной частоте.
Пробовал уменьшить задержку, но частота растет линейно, уменьшаю на 1000 задержку, частота возрастает в 1000 раз.
Неужели m4 действительно надо 10 циклов на 1 проход цикла задержки?
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
20.09.2012, 12:35
В какой памяти работает этот код? Хотите максимальную скорость - запускайте код из РАМ. Флэш не работает на 168мгц - лезет куча задержек. Поэтому я и написал что нопами в армах никто не делает задержки - сильно другие условия всего. Пользуйте таймер и будет счастие. Не говоря уже о возможности автоматической смены состояния пина.
0
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 148
20.09.2012, 12:43
Цитата Сообщение от botu_dork
В какой памяти работает этот код?
А как это узнать? ))
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
20.09.2012, 12:45
Цитата Сообщение от BuTbKo
Цитата Сообщение от botu_dork
В какой памяти работает этот код?
А как это узнать? ))
ну какбы либо при отладке глянуть из какой области памяти работает код, либо из опций компилятора.
0
0 / 0 / 0
Регистрация: 17.02.2011
Сообщений: 191
20.09.2012, 12:45
А частоту померить просто... Есть у них волшебный выход MCO - на который можно вывести системную тактовую
0
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
20.09.2012, 12:47
Да, только чем ее смотреть-то на такой частоте? Разве что делитель соорудить...

Впрочем вполне можно будет увидеть, что больше 16.
0
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 148
20.09.2012, 16:00
Спасибо за советы, буду смотреть вечером, что и как.
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
20.09.2012, 16:22
Вопросы тактирования поднимали тут http://forum.iosyitistromyss.r... 35&t=11747.
И еще - пока не могу найти название топика, был интересный топик по аналогичной проблеме - там мы дрыгали ногой и даже осциллограммы снимали при различном тактировании периферии. Вспомню - скину сюда линк. Это все тут на нашем форуме было. Возможно в STM32 для начинающих.
0
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 148
23.09.2012, 10:30
Всем спасибо, разобрался. Действительно ядро работает на 168Mhz.
А цикл задержки выполнялся 10 тактов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2012, 10:30
Помогаю со студенческими работами здесь

Тактовая частота ATMEL Studio
Непонятно зачем решил освоить Atmel Studio и заодно Proteus. Раньше всегда пользовался CodeVision и собственной макеткой. Решил для начала...

Intel Core i7-3770 4 ядра, тактовая частота 3.4 ГГц
Оцените пожалуйста системный блок: Подумываю купить (автор продает ТОЛЬКО системный блок) интересно узнать ваше мнение, адекватная ли...

тактовая частота
в чем измеряется тактовая частота микропроцессора?

Тактовая частота процессора.
Здравствуйте! Недавно купил себе новый процессор: DualCore Intel Pentium E6500. По умолчанию тактовая частота этого процессора - 2,93...

Тактовая частота процессора
Доброго времени суток, хотел посоветоваться со знающими людьми. Ситуация такая у меня процессор AMD A10 6800K 4,10 GHz, ради интереса начал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru