Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Заметки на полях

Вс окт 02, 2022 12:42:32

Простой код.
Код:
int y = GPIOA->MODER;

int main()
{   
  printf("y=0x%08X",y); 
}
Как думаете, почему должно вывестись что-то типа "y=0x6A800000", а у Eddy_Em выведет "y=0x00000000"?

Собственно вопрос, где в программе выполняется инициализация значения y посредством считывания GPIOA->MODER?

Re: Заметки на полях

Вс окт 02, 2022 14:36:58

Ну дак... это сработает только в C++ (в чистом Си будет сообщение об ошибке использования неконстантного инициализатора), при вызове (в самом конце) как раз той самой загадочной __libc_init_array, назначение которой напрягает многих. Поздравляю, конечно, что вы теперь тоже знаете, для чего нужен __libc_init_array, точнее говоря, static_initialization :)))

Изображение
Ответить