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

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

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

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

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

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


 
Опции темы
Непрочитано 12.09.2013, 14:33  
thebadtouch
Частый гость
 
Регистрация: 21.09.2010
Сообщений: 22
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
thebadtouch на пути к лучшему
По умолчанию Локальные переменные

Здравствуйте,использую Keil и STM32F107, возник вопрос, вот функция
Код:
uint8_t CRC_compare(void)
{
uint32_t i=0,FlashBuffer[0xffff],Buffer_Size=0,MyCRC=0,adr=0,mem=0;
	
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
	adr=0x08000000;
	for( i=0x00000; i‹=0x1FFFF; i+=4)
	{	
				adr+=i;	   		
				mem=flash_read(adr);

				if (mem==0xFFFFFFFF)			
					break;
				else					
				{				  	
					FlashBuffer[Buffer_Size]=mem;
					Buffer_Size++;
				}
	}
	CRC_ResetDR();
	CRC_CalcBlockCRC((uint32_t *)FlashBuffer, Buffer_Size);
	CRCValue=CRC_GetCRC();
	MyCRC=flash_read(0x0801FFFC);
	if (CRCValue==MyCRC)
	{
		return 1;
	}
	else
	{

		return 0;		
	}	
}
и проблема в том что,если FlashBuffer задан как локальная переменная то на строчке
Код:
FlashBuffer[Buffer_Size]=mem;
программа уходит в HardFault()
а если FlashBuffer задан как глобальная то все нормально, но мне то она не нужна как глобальная) собственно в чем может быть дело?
Реклама:
thebadtouch вне форума  
Непрочитано 12.09.2013, 14:53  
Nik_B
Прохожий
 
Регистрация: 20.01.2011
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Nik_B на пути к лучшему
По умолчанию Re: Локальные переменные

А у Вас есть 256кБ ОЗУ для переменной 'unt32_t FlashBuffer[0xffff]' ?
Nik_B вне форума  
Непрочитано 12.09.2013, 15:03  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Локальные переменные

Сообщение от thebadtouch Посмотреть сообщение
uint32_t FlashBuffer[0xffff]
Откуда в этом проце 256кБайт срама появится?
AJScorp вне форума  
Непрочитано 12.09.2013, 15:48  
thebadtouch
Частый гость
 
Регистрация: 21.09.2010
Сообщений: 22
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
thebadtouch на пути к лучшему
По умолчанию Re: Локальные переменные

так окей, я пишу FlashBuffer[0x2fff] если локально то ХАрдФолт
если глобально то все ок, поясните разницу, я не понимаю чегото
thebadtouch вне форума  
Непрочитано 12.09.2013, 15:53  
Nik_B
Прохожий
 
Регистрация: 20.01.2011
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Nik_B на пути к лучшему
По умолчанию Re: Локальные переменные

А Вы напишите FlashBuffer[10] и попробуйте
Nik_B вне форума  
Непрочитано 12.09.2013, 16:06  
thebadtouch
Частый гость
 
Регистрация: 21.09.2010
Сообщений: 22
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
thebadtouch на пути к лучшему
По умолчанию Re: Локальные переменные

мне надо минимум 0x2000 значений,я считаю контрольную сумму программы, очевидно что с 10 будет работать,но тогда не будет работать остальная часть функции) или надо считать частями тогда?
thebadtouch вне форума  
Непрочитано 12.09.2013, 16:12  
Nik_B
Прохожий
 
Регистрация: 20.01.2011
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Nik_B на пути к лучшему
По умолчанию Re: Локальные переменные

Для 0x2000 значений нужно 32768-байта в стеке. Он у Вас там есть есть ?
Nik_B вне форума  
Непрочитано 12.09.2013, 16:21  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: Локальные переменные

В файле startup_stm...... .s в закладке Configuration Wizard выставьте нужный размер стека
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Сказали "Спасибо" alberio
thebadtouch (12.09.2013)
Непрочитано 12.09.2013, 16:21  
thebadtouch
Частый гость
 
Регистрация: 21.09.2010
Сообщений: 22
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
thebadtouch на пути к лучшему
По умолчанию Re: Локальные переменные

Сообщение от Nik_B Посмотреть сообщение
Для 0x2000 значений нужно 32768-байта в стеке. Он у Вас там есть есть ?
стеки для локальных и глобальных переменных разные?я немного плаваю в этом поэтому спрашиваю...не понимаю что нужно изучить
thebadtouch вне форума  
Непрочитано 12.09.2013, 16:38  
alberio
Гражданин KAZUS.RU
 
Аватар для alberio
 
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
alberio на пути к лучшему
По умолчанию Re: Локальные переменные

Локальные переменные хранятся в стеке - при входе в функцию под них выделяется место, при выходе - очищается.
Глобальные же хранятся в оперативной памяти по конкретному адресу. Постоянно.
__________________
Sex, Druggs, Rock&Roll
alberio вне форума  
Сказали "Спасибо" alberio
thebadtouch (12.09.2013)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто пользовался Виртуальные локальные телефонные DID VоIP Electric75 Делимся опытом 16 02.10.2013 12:05
Не меняются переменные в Watch Window ajsn Proteus 20 06.04.2011 00:00
Переменные резисторы SMD SwanSwan Информация по радиокомпонентам 9 19.03.2010 00:51


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


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