Easyelectronics.ru

Электроника для всех
Текущее время: 16 окт 2019, 07:24

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 13:18 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
Еще одно непонимание возникло.

При объявлении переменной (например volatile uint16_t u2=0;) в самом начале проекта (сразу после дефайнов)
значение этой переменной в самой программе отличается.

Я объявил 0, а при выполнении программы она становится мусорной (принимает любое значение)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 13:27 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1002
Ну почему мы должны ректотермальным криптоанализом заниматься? Среда разработки какая? Стартап какой?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 13:38 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
Coocox Version: 1.7.7

startup_stm32l1xx_md.c
* @author Coocox
* @version V1.0
* @date 20/07/2010
* @brief M0 M3 Devices Startup code.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 14:01 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1002
Ок, а что понимается под "начало проекта"? Я конечно, догадываюсь, но хотелось бы подтверждения. Может даже осчастливишь нас текстом программы? Стартап в проект точно добавлен или просто рядом лежит? map-файл тоже можно глянуть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 14:33 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
Код:
#include "stm32l1xx.h"
#include "stm32l1xx_gpio.h"
#include "stm32l1xx_rcc.h"
#include "stm32l1xx_adc.h"
#include "stm32l1xx_tim.h"

#define RESET_REGISTER 0x0C///reset register

volatile int32_t c0 = 0;   

int main(void) {

while (1);

}




Вложения:
map.txt [62.95 Кб]
Скачиваний: 44
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 14:37 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 15:30 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1002
Знаешь, я посмотрел map. Какого чёрта ты нам мозги сношаешь? Вот это
Код:
#include "stm32l1xx.h"
#include "stm32l1xx_gpio.h"
#include "stm32l1xx_rcc.h"
#include "stm32l1xx_adc.h"
#include "stm32l1xx_tim.h"

#define RESET_REGISTER 0x0C///reset register

volatile int32_t c0 = 0;   

int main(void) {

while (1);

}
такой map дать не может. Там ещё куча кода есть. В процитированном коде глобальная переменная c0 при старте будет равна нулю даже если ты это специально не напишешь. Что с ней потом делает остальной код - разбирайся сам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 16:04 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
Изображение

так объявлена

Изображение

Так она показывается сразу при входе в main


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 17:13 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 3643
Значит, в стартапе не прописана работа с инициализацией глобальных переменных или этот код не вызывается или неверно исполняется. и не происходит зануление этой переменной.

kP = kP - очень странная конструкция :) 5 = 5, 10 = 10, 1234 = 1234


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 05 сен 2019, 17:45 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1002
r0cket, показывай стартап или я уже включил паяльник для криптоанализа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 11:02 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
файл стартапа


Вложения:
startup_stm32l1xx_md.c [12.39 Кб]
Скачиваний: 50
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 11:13 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1002
Бинго! Всё что после вот этого закомментировано придумали трУсы?
Код:
/* Copy the data segment initializers from flash to SRAM */

Криптоанализатор сработал без терморектального приложения :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 11:50 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
https://github.com/LonelyWolf/stm32/blo ... 2l1xx_md.c
Такой файл идет штатно для Coocox =)

Спасибо за помощь.
Первый раз такое встречаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 11:51 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4335
Откуда: Кемеровская область, Киселевск
При чем тут гитхаб LonelyWolf ?
У CooCox там инит секций - Initialize data and bss
К тому же IDE эта мертвая.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 12:08 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
Oxford писал(а):
При чем тут гитхаб LonelyWolf ?
У CooCox там инит секций - Initialize data and bss
К тому же IDE эта мертвая.


гитхаб LonelyWolf привел как пример того что я ничего не менял в том файле.
Выбрал процессор в Repository и coocox сам добавил этот файл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 12:12 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2277
И кусок кода этот так и был закомментирован? Что-то не очень верится... ну да ладно. Хватит тогда использовать труп. Кокос давно умер, его больше нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 12:17 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
https://electronix.ru/forum/index.php?a ... &id=120792
Вот старая тема такого же бедолаги)

Но слишком поздно я ее нашел


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 12:29 
Старожил

Зарегистрирован: 02 ноя 2015, 19:21
Сообщения: 607
Откуда: Санкт-Петербург
BusMaster писал(а):
kP = kP - очень странная конструкция :) 5 = 5, 10 = 10, 1234 = 1234


может конечно это не совсем правильно, но я иногда , в некоторых местах делаю так же (с условием). можно сказать что это проверка на то что переменная определена. Конечно в нормальном коде такого быть не должно... но в реальных условиях у меня встречалось. поэтому я делал так
if (переменная=переменная){код с работой переменной}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 12:31 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
Atomic-dm писал(а):
BusMaster писал(а):
kP = kP - очень странная конструкция :) 5 = 5, 10 = 10, 1234 = 1234


может конечно это не совсем правильно, но я иногда , в некоторых местах делаю так же (с условием). можно сказать что это проверка на то что переменная определена. Конечно в нормальном коде такого быть не должно... но в реальных условиях у меня встречалось. поэтому я делал так
if (переменная=переменная){код с работой переменной}


Это написано только для того что бы в Debug навести курсором на переменную и было видно ее значение.
Только для данного случая.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 12:51 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2277
Atomic-dm писал(а):
может конечно это не совсем правильно, но я иногда , в некоторых местах делаю так же (с условием). можно сказать что это проверка на то что переменная определена. Конечно в нормальном коде такого быть не должно... но в реальных условиях у меня встречалось. поэтому я делал так
if (переменная=переменная){код с работой переменной}

И что вам это даст? Если переменная не определена, то "код с работой переменной" также выдаст вам ошибку. Или вы что-то не то называете "определением переменной". В любом случае это не имеет смысла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 12:52 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2277
r0cket писал(а):
Это написано только для того что бы в Debug навести курсором на переменную и было видно ее значение.
Только для данного случая.

А Watch пользоваться не пробовали?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 13:00 
Старожил

Зарегистрирован: 28 ноя 2013, 14:12
Сообщения: 275
NStorm писал(а):
r0cket писал(а):
Это написано только для того что бы в Debug навести курсором на переменную и было видно ее значение.
Только для данного случая.

А Watch пользоваться не пробовали?


Так было нагляднее


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 13:06 
Старожил

Зарегистрирован: 02 ноя 2015, 19:21
Сообщения: 607
Откуда: Санкт-Петербург
NStorm писал(а):
И что вам это даст? Если переменная не определена, то "код с работой переменной" также выдаст вам ошибку.

в этом и штука, что не всегда выдается ошибка. не всегда
Цитата:
Или вы что-то не то называете "определением переменной". В любом случае это не имеет смысла.

в отладчике написано NaN, а это значит что где-то что-то пошло не так....

Я не говорю , что это решение правильное... и это лишь одна из проверок. Так же как проверка деления на ноль и компилятор не будет ругаться на такой код, но в реальной работе такое может проявится и после такого деления все может пойти не так как планировалось.
Есть еще и более редкие случаи, которые могут спонтанно возникать в работе устройства за сутки...неделю, в зависимости от ситуации. Возможно у грамотного специалиста по проектированию ПО таких случаев и не бывает, но вот у меня бывает. И в 70тыс. кода иногда проще сделать такую проверку чем переписывать кучу "вторичного" кода закладывая проверку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 13:21 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2277
NaN - это Not a Number. Т.е. "не число". Это возникает вообще-то вроде только с числами с плав. запятой. Видимо тип криво определен просто в отладчике.
Цитата:
в этом и штука, что не всегда выдается ошибка. не всегда

Не в этом. Что-то вы путаете. В языке C есть однозначное обозначение слову "определение", т.е. definition - это когда переменной присваивается тип и выделятся место.
Если переменная определена, конструкция var = var лишена смысла. Во всяком случае на stm32 с gcc уж точно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32l152 не сохраняет переменную
СообщениеДобавлено: 06 сен 2019, 16:10 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 1002
NStorm писал(а):
Если переменная определена, конструкция var = var лишена смысла. Во всяком случае на stm32 с gcc уж точно.
Так, чисто поржать
Код:
USART1->DR=USART1->DR;


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB