Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32L151RBT6 проблема с запуском
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
MiklPolikov
Непонятная проблема с запуском STM32L151RBT6 :
Если на ногах 5 6 нет кварца 16МГц то всё хорошо, а если есть то при запуске висит в system_stm32lxx.c на строчке :
Код
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */

Установил Keil 510, создал заново проект, взял новые файлы system_stm32lxx.c и startup_stm32l1xx_md.s, ничего не изменилось .
Поменял экземпляр процессора, кварц, поиграл с номиналами конденсаторов 0-22пФ , эффект стабильный.
Спроектировал уже десяток плат с STM32L151CBU , и такого некогда не видел.
Кто-нибудь знает из-за чего проблема ?

Заранее спасибо !
KnightIgor
Цитата(MiklPolikov @ Feb 27 2014, 13:51) *
Непонятная проблема с запуском STM32L151RBT6 :
Если на ногах 5 6 нет кварца 16МГц то всё хорошо, а если есть то при запуске висит в system_stm32lxx.c на строчке :
Код
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */

А чему-таки равны FLASH_BASE и VECT_TAB_OFFSET? Похоже, происходит переназначение указателя на несуществующую векторную таблицу, и все идет прахом.
Если Вы в проекте не делали нестандартных телодвижений по изменению адреса загрузки программы (например, оставляя место для bootloader), просто закомментируйте строчку: значение VTOR после сброса есть то, что доктор прописал, и не нужно его трогать без особой нужды.

P.S. Я, надеюсь, Вы знаете, что такое VTOR?
MiklPolikov
Цитата(KnightIgor @ Feb 27 2014, 20:38) *
А чему-таки равны FLASH_BASE и VECT_TAB_OFFSET? Похоже, происходит переназначение указателя на несуществующую векторную таблицу, и все идет прахом.
Если Вы в проекте не делали нестандартных телодвижений по изменению адреса загрузки программы (например, оставляя место для bootloader), просто закомментируйте строчку: значение VTOR после сброса есть то, что доктор прописал, и не нужно его трогать без особой нужды.

P.S. Я, надеюсь, Вы знаете, что такое VTOR?


FLASH_BASE и VECT_TAB_OFFSET это константы.
До выполнения этой строчки VTOR=0 , после TBLOFF=0x00100000 TBLBASE=0
Почему-то когда программа попадает на эту строчку при припаянном кварце 16МГц , тактовая частота процессора берётся из PLL и равна 64МГц, что недопустимо !
PLLSRC = 1 (т.е. PLL тактируется от HSE)
PLLNUL = 4 (т.е. множитель х12)
PLLDIV = 2 (т.е. делитель /3)
SW =3 (т.е. на AHB подаётся частота PLL)
HPRE=0 (т.е. делитель AHB выключен)

Переключение SW вручную на другие значения непосредственно перед этой строчкой позволяет её успешно пройти и работать дальше.

Глупый вопрос:
Как отредактировать файл system_stm32lxx.c ? Он не хочет редактироваться ни в Кейле, ни в блокноте.
Заранее спасибо !
Eminem
Цитата(MiklPolikov @ Feb 28 2014, 21:06) *
FLASH_BASE и VECT_TAB_OFFSET это константы.
До выполнения этой строчки VTOR=0 , после TBLOFF=0x00100000 TBLBASE=0
Почему-то когда программа попадает на эту строчку при припаянном кварце 16МГц , тактовая частота процессора берётся из PLL и равна 64МГц, что недопустимо !
PLLSRC = 1 (т.е. PLL тактируется от HSE)
PLLNUL = 4 (т.е. множитель х12)
PLLDIV = 2 (т.е. делитель /3)
SW =3 (т.е. на AHB подаётся частота PLL)
HPRE=0 (т.е. делитель AHB выключен)

Переключение SW вручную на другие значения непосредственно перед этой строчкой позволяет её успешно пройти и работать дальше.

Глупый вопрос:
Как отредактировать файл system_stm32lxx.c ? Он не хочет редактироваться ни в Кейле, ни в блокноте.
Заранее спасибо !


Снять с него атрибут Read-only.
Обычно он настроен на 8 MHz кварц, у вас как я понял - 16.
Golikov A.
надо правильные #define прописать, у stm есть огромный header с кучей ifdef, жутко путанный, надо его почитать и найти правильную комбинацию дифайников
MiklPolikov
Цитата(Golikov A. @ Feb 28 2014, 23:45) *
надо правильные #define прописать, у stm есть огромный header с кучей ifdef, жутко путанный, надо его почитать и найти правильную комбинацию дифайников


Так и есть, там было #define HSE_VALUE 8000000 . Спасибо.
Только непонятно, как у меня тогда работал процессор STM32L151CBU с таким же кварцем.
И зачем вообще в этом стартапном коде запускаются всё генераторы. Можно бы было на MSI до функции main доехать.


Golikov A.
я неделю бился с какими то проблемами на stm, потом понял что беда в этом файле с кучей дефайнов, выкинул его в топку, и все частоты руками по мануалу настроил. Он слишком большой и бестолковый ИМХО.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.