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

 
 
> Проблема с stm32f103vc, Программа не работает из FLASH
ex51
сообщение May 11 2010, 17:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 22-06-04
Из: Российская Империя
Пользователь №: 90



Может кто подскажет в какую сторону смотреть.

Написал программу на C++ под иар 5.50 отладил всё в ОЗУ. Собрался отдавать заказчику, прошил всё во внутренний флэш и получил полный ступор!!!

То есть, программа работает, но периодически вылетает в хардфаулт. В ОЗУ всё работает часами! Все опции компилятора одинаковые, уже и листинги все проверил, один к одному с версией в ОЗУ. Единственное, что сразу удалось обнаружить, что программа из флеш работает как минимум в два раза быстрее чем из ОЗУ.

Уже неделю бьюсь не могу понять чем работа во флеши так радикально отличается от работы в ОЗУ.
Может хоть направления поиска кто даст, куда смотреть. Ерату читал ничего криминального не обнаружил.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ex51
сообщение May 11 2010, 18:34
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 22-06-04
Из: Российская Империя
Пользователь №: 90



Да нет настройки вроде все правильные.

Вот кусок кода:

void RCC_Configuration(void)
{
/* Setup the microcontroller system. Initialize the Embedded Flash Interface,
initialize the PLL and update the SystemFrequency variable. */
RCC_DeInit();

// Enable external crystal generator
RCC_HSEConfig(RCC_HSE_ON);

/* Wait till HSE is ready */
HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus == SUCCESS) {
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); // Enable Prefetch Buffer

FLASH_SetLatency(FLASH_Latency_2); // Flash 2 wait state

RCC_HCLKConfig(RCC_SYSCLK_Div1); // HCLK = SYSCLK

RCC_PCLK2Config(RCC_HCLK_Div1); // PCLK2 = HCLK

RCC_PCLK1Config(RCC_HCLK_Div2); // PCLK1 = HCLK/2

RCC_MCOConfig(RCC_MCO_PLLCLK_Div2); // MCO output frequency configure

RCC_ADCCLKConfig(RCC_PCLK2_Div6); // ADCCLK = PCLK2/6

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_8); // PLLCLK = 7.3728MHz * 8 = 58.98 MHz

RCC_PLLCmd(ENABLE); // Enable PLL

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //* Wait till PLL is ready

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // Select PLL as system clock source

while(RCC_GetSYSCLKSource() != 0x08); // Wait till PLL is used as system clock source
}

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); // DMA clock enable
...

Частота кварца 7372800
Go to the top of the page
 
+Quote Post



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

 


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


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