Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
Kuro
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
1

Keil, STM32F103RB, симуляция, обнуляется переменная в main()

26.12.2012, 20:06. Просмотров 3513. Ответов 4
Метки нет (Все метки)

Проц STM32F103RB, HSE на 72MHz
Keil 4.60
Использую CMSIS, stortup код стандартный из CMIS (ассемблерный),

в файле system_stm32f10x.c объявляю переменную volatile uint32_t flag_state;
тут же делаю подключение файла #include "config.h"

В config.h пишу:

extern volatile uint32_t flag_state;
#define DEF_FLAG1 0x00000001

В system_stm32f10x.c вызывается SystemInit(), здесь сбрасываю значение flag_state в 0, далее
вызывается SetSysClockTo72, в которой меняю значение flag_state |= DEF_FLAG1;

В main.c также инклудю config.h, далее в int main() первой командой проверяю flag_state

Запускаю симулятор, иду по шагам, flag_state изменяется, но после попадания в main() переменная флагов равна нулю.
Что не учел???

UPD: прошелся по дизассемблерному коду, так там перед тем как попадаю в мой main() выполняется какой-то код с метками __scattertood, __scattertood_zeroinit и т.д., тут и происходит обнуление моей переменной. Что это за код??

[179.45 Кб]
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2012, 20:06
Ответы с готовыми решениями:

что KEIL пихает в конец памяти? ( STM32F103RB)
Нужно разместить константу в конце памяти - Кпримеру так- const char AAA ...

Переменная в ROM, Keil
Здравствуйте! Может кто сталкивался: есть такая конструкция #define P_LENGHT 40 typedef...

Переменная с main.c не работает на другом файле.
Использую keil 5 для STM32F103. Вот код упрощенно- main.c #include "stm32f1xx_hal.h" unsykned...

Переменная обнуляется
Здравствуйте. У меня есть такой код: class MyClass : MonoBehaviour { public static int...

Обнуляется переменная
Добрый день. Сразу предупреждаю, мягко говоря, код не очень красивый. Проблема такая, есть 2...

4
dymo2611
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
27.12.2012, 21:48 2
А какой ей быть, если не обнулённой при старте? Тот код за тем и следит.
Код
volatile uint32_t flag_state;
и контренто обнулённой в SystemInit
Код
flag_state &= 0x00000000;
0
Kuro
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
28.12.2012, 14:03 3
Т.е. инициализация стека, кучи, обнуление ОЗУ и т.д. идет после systeminit() и перед вызовом моего main() ? Этого я и не учел, тогда выходит, что не получится знать значение флаговой переменной установленной до main(), она все равно обнулится. Собственно задумка была такая: хотел в main знать установился ли HSE или работаем от HSI.

Где можно почитать об этом коде, который вызывается после systeminit() перед main(), он стандартный или разные IDE генерят свою инициализацию ?
Может стоит не вызывать из стартапа systeminit() а вызывать его уже в main() ? Подскажите как правильно.
0
Kooddjomp
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
29.12.2012, 04:47 4
А почему не спросить биты SWS о текущем активном тактовом генераторе ???
0
Kuro
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 9
29.12.2012, 16:26 5
Только начал разбираться с стм,
Да, так и делаю, определяю по sws, но про структуру программы и код инициализации озу и т.д. вопрос остается открытым.
0
29.12.2012, 16:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2012, 16:26

Обнуляется переменная
Ребята, в общем такая проблема. При нажатии кнопки ok формы у меня почему-то обнуляется переменная...

Обнуляется переменная
using System; namespace ConsoleApp6 { class Program

Переменная произвольно обнуляется
Здравствуйте. Есть класс: template<const int k,const int n> class GF { public: int F; //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru