Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 04.05.2017, 13:40  
Den
Частый гость
 
Регистрация: 03.05.2017
Сообщений: 32
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
Den на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Спасибо попробую. Но с кубом работать не хочу, слушком уж непонятный код он генерит..лучше SPL
Реклама:
Den вне форума  
Непрочитано 04.05.2017, 14:06  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

По умолчанию системная обычно сконфигурирована на максимальную 168 МГы через умножитель частоты PLL.
В файле system_stm32f4xx.с это вверху в заголовке и описано, правда, там подразумевается, что кварц будет на 25 МГц. На дискаверине кварц 8 МГц, поэтому МК будет работать на частоте ниже 168 в 25/8 раз (около 54 МГц).
Исправив строчку
#define PLL_M 25
на
#define PLL_M 8
получим 168 МГц системной.
Заодним, надо откорректировать соответственно строчку
#define HSE_VALUE ((uint32_t)25000000) /*!‹ Value of the External oscillator in Hz */
таким же образом - 8000000
дабы при обращении к SystemCoreClockUpdate получать верное значение.

Для начальных опытов можно вообще закомментить сточку SetSysClock(); в функции SystemInit (void) - и МК будет гарантированно работать на 16 МГц от внутреннего HSI.
По мере освоения и прочтения о модуле RCC, можно будет приступать к экспериментам с повышением тактовой.

Сообщение от DanilinSA Посмотреть сообщение
В самом проекте есть неявный вызов SystemInit().
Эта функция явно вызывается из ассеблерного стартового файла startup_stm32f40xx.s,:

/* Call the clock system intitialization function.*/
bl SystemInit


, еще до вызова main-функции, и лишь после завершения той функции идет вызов

/* Call the application's entry point.*/
bl main


Отладчик пропускает предыдущие операции и останавливается на начале main, потому как у него задано такое поведение.
Поставив брекпоинт, можно остановить и увидеть исполнение "неявных" функций.

PS. Куб удобно использовать, чтобы подсмотреть графически взаимосвязи в системе тактирования, значения делителей и получаемые частоты, ибо может быть там всё настолько запутанно, особенно в F7хх, что без поллитры стопудово хрен разберешься и черта с два запомнишь на память.

Последний раз редактировалось NewWriter; 04.05.2017 в 14:37.
NewWriter вне форума  
Сказали "Спасибо" NewWriter
Den (04.05.2017)
Непрочитано 04.05.2017, 14:48  
Den
Частый гость
 
Регистрация: 03.05.2017
Сообщений: 32
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
Den на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Спасибо, обязательно сегодня поэкспериментирую с PLL_M. Но почему это может влиять на "незапуск" программы? Из-за "SystemCoreClockUpdate" ?
Den вне форума  
Непрочитано 04.05.2017, 15:40  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Нет. Функция SystemCoreClockUpdate вызывается только явно самим программистом и используется для обновления переменной SystemCoreClock при смене системной частоты во время работы проги. Переменная SystemCoreClock используется опять же для корректировки частотно-зависимых параметров. Кароч говоря, чтобы например таймер продолжал считать секундные интервалы верно, если меняется системная частота во время работы. Ну, бывает такое, динамическое управление частотой МК для энергосбережения.

Касательно запуска МК. Как я написал ранее - закомментируйте строчку SetSysClock() - МК должен запуститься от внутреннего 16 МГц.
Поставьте брекпоинт на main() и посмотрите, доходит ли до этого места вообще. И далее, пошагово, пошагово.

Напишите вот такую прогу:
PHP код:
int main(void)
{
 
int i 0
 
  
RCC-›AHB1ENR |= RCC_AHB1ENR_GPIODEN ;

  
GPIOD-›MODER |= GPIO_MODER_MODER12_0 
                      
GPIO_MODER_MODER13_0 
                  
GPIO_MODER_MODER14_0 |
                  
GPIO_MODER_MODER15_0 ;
  
  
GPIOD-›ODR 0xFFFF;
  
  while (
1)
  {
    
i++;
  }

должны зажечься все светодиоды.
Если этого не происходит, у вас значит не правильно собран проект. Я не знаю, как там в IAR, но попробуйте создать проект с STM32F407VG, по идее должны быть подключены все необходимые файлы.
NewWriter вне форума  
Непрочитано 04.05.2017, 19:05  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

NewWriter, извиняюсь за нескромный вопрос, да ещё и не совсем по теме - но зачем нужна переменная i в этом примере?
H4LF вне форума  
Непрочитано 04.05.2017, 20:46  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Не нужна она там.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 04.05.2017, 21:11  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

используется для нужд отладчика
NewWriter вне форума  
Непрочитано 05.05.2017, 05:24  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

eddy, я даже подозреваю, что её там и нету (в листинге, а значит и в самой прошивке).

NewWriter, теперь возник вопрос - почему отладчик в ней нуждается и для чего он её использует (если, конечно, компилятор её не выкинул в этом примере). Ну очень интересно.
H4LF вне форума  
Непрочитано 05.05.2017, 06:51  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вы не правы. Если бы сами попробовали, то знали бы. Просто так компилятор не выбросит i, нужны веские на то основания. А эти самые "веские основания" в пошаговой отладке неприменимы.
Предлагаю с этим вопросом вам разобраться самостоятельно.

while (1)
{
i++;
20000246: 687b ldr r3, [r7, #4]
20000248: 3301 adds r3, #1
2000024a: 607b str r3, [r7, #4]

} /* while (1) */
NewWriter вне форума  
Непрочитано 05.05.2017, 09:31  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от NewWriter Посмотреть сообщение
Просто так компилятор не выбросит i, нужны веские на то основания
Зависит от уровня оптимизации. Именно поэтому если у вас -O2 или -O3, необходимо втыкать nop() в тело пустого цикла. А отладочную переменную — счетчик пустых циклов — объявить как volatile.
Хотя, подозреваю, что отлаживаете вы все-таки с -O0.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 09:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot