основы STM32 - переменные.
Добавлено: Чт июл 12, 2012 21:59:34
Доброго времени суток. Приобрел я себе stm32vldiscovery. Вот обучаюсь по немногу. И как всегда возникают элементарные вопросы, которые к сожелению в интернете не найти (я не нашел, может моё зрение 0.6 - это и есть причина 
Вообщем так получается. Пользуюсь keil, проект создал, светодиодиком мигать научился, но лучше знание по контроллеру не приобретешь, пока не полезешь в основы. На Си создаю переменную в самом начале:
поже меняю её значение:
и смотрю что творит дебагер в асм коде:
В итоге понимаю что переменная flag хранится по адрессу 0x08000280 (PC=0x0800020C + #112).
То есть сразу же после программного кода который начинается от 0x08000000 адресса флеша.\
Так вот вопрос: переменная размещается за кодом программы сразу, во флеше, а флеш программы энергонезависимый и как я понимаю имеет ограниченный рессурс записи/чтения. Следовательно, если очень часто менять переменную, то ячейка флеша загнеться? и МК будет негожий?
Если да, то какая альтернатива хранения перемменых?
Вообщем так получается. Пользуюсь keil, проект создал, светодиодиком мигать научился, но лучше знание по контроллеру не приобретешь, пока не полезешь в основы. На Си создаю переменную в самом начале:
Код: Выделить всё
#include "stm32f10x.h"
unsigned char flag=0;
unsigned char flag2=4;
unsigned char flag3=2;
Код: Выделить всё
while(1)
{
flag=1;
flag2=1;
flag3=1;
flag2=10;
flag3=13;Код: Выделить всё
33: flag=1;
0x0800020A 2001 MOVS r0,#0x01
0x0800020C 491C LDR r1,[pc,#112] ; @0x08000280
0x0800020E 7008 STRB r0,[r1,#0x00]
34: flag2=1;
0x08000210 491C LDR r1,[pc,#112] ; @0x08000284
0x08000212 7008 STRB r0,[r1,#0x00]
35: flag3=1;
0x08000214 491C LDR r1,[pc,#112] ; @0x08000288
0x08000216 7008 STRB r0,[r1,#0x00]
36: flag2=10;
0x08000218 200A MOVS r0,#0x0A
0x0800021A 491A LDR r1,[pc,#104] ; @0x08000284
0x0800021C 7008 STRB r0,[r1,#0x00]То есть сразу же после программного кода который начинается от 0x08000000 адресса флеша.\
Так вот вопрос: переменная размещается за кодом программы сразу, во флеше, а флеш программы энергонезависимый и как я понимаю имеет ограниченный рессурс записи/чтения. Следовательно, если очень часто менять переменную, то ячейка флеша загнеться? и МК будет негожий?
Если да, то какая альтернатива хранения перемменых?