Я пытаюсь понять код someones, и они читают пространство памяти в области GPIO (0x4002 0000 - 0x4002 03FF), но это более высокий адрес, чем регистры GPIO (они идут только до 0x24).ARM M3: Использование дополнительного места в карте периферийной памяти GPIO? Ты можешь сделать это?
Можете ли вы использовать все дополнительное пространство выше 0x4002 0024 и ниже 0x4002 03FFF? Что произойдет, если это пространство будет прочитано?
EDIT: Я полностью забыл, что могу просто отправить код. Я жирным шрифтом строку, которая вызывает у меня головные боли:
R0 = 0x15
PUSH {R3,LR} ;
ADD.W R0, R0, R0,LSL#1 ;
MOV GPIO_Port_A_Address, #0x40020000
LSLS R0, R0, #2 ;
ADDS R2, GPIO_Port_A_Address, R0 ;
LDRB R2, [R2,#4] ;
MOVS R1, #1 ;
LSL.W R1, R1, R2 ;
LDR R0, [GPIO_Port_A_Address, R0];
UXTH R1, R1 ;
BL sub_8001ED8 ;
MOVS R0, #0 ;
POP {R3,PC} ;
Какой микроконтроллер? Является ли код, на который вы смотрите, даже для того же микро, о котором вы думаете? Единственным «общим» аспектом является то, что 0x40000000 - 0x5fffffff на карте памяти Cortex-M3 - это место, где идут периферийные устройства. Все, что выходит за рамки этого, зависит от конкретной детали. – Notlikethat
Да, это STM32F205. Конечно, я читаю ту же таблицу данных для UC, для которой был написан код. Я специально спрашиваю о регионе GPIO, поэтому я сказал, что в моем первоначальном вопросе. – eibwen
Правильно, если бы этот контекст был в вопросе для начала, тогда мне не пришлось бы спрашивать. Если продолжать работать только «Cortex-M3», «область GPIO» бессмысленна, потому что ядра процессора не имеют GPIO. Точно так же для всех, кого мы знаем, «чей-то код», который мы не можем видеть и рассуждать, вполне может оказаться, скажем, случайным ошибочным кодом STM32F1 из Интернета (где этот диапазон адресов будет DMA-контроллером) и, таким образом, визуализировать вопрос недействителен. Хороший вопрос содержит _все_ соответствующие детали. – Notlikethat