реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32L151RBT6 проблема с запуском, Виснет в system_stm32lxx.c Keil
MiklPolikov
сообщение Feb 27 2014, 12:51
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Непонятная проблема с запуском 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 , и такого некогда не видел.
Кто-нибудь знает из-за чего проблема ?

Заранее спасибо !
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Feb 27 2014, 16:38
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(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?
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Feb 28 2014, 19:06
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(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 ? Он не хочет редактироваться ни в Кейле, ни в блокноте.
Заранее спасибо !


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
Eminem
сообщение Feb 28 2014, 19:37
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 13-02-12
Пользователь №: 70 236



Цитата(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.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 28 2014, 19:45
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



надо правильные #define прописать, у stm есть огромный header с кучей ifdef, жутко путанный, надо его почитать и найти правильную комбинацию дифайников
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Feb 28 2014, 21:51
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



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


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




--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 28 2014, 22:34
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



я неделю бился с какими то проблемами на stm, потом понял что беда в этом файле с кучей дефайнов, выкинул его в топку, и все частоты руками по мануалу настроил. Он слишком большой и бестолковый ИМХО.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th July 2025 - 00:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01446 секунд с 7
ELECTRONIX ©2004-2016