Re: stm32 и работа со стуктурами и указателями
Добавлено: Вт апр 02, 2019 09:06:03
YS, хочу еще ваших статей по Си в том же ключе разжевывания по железу, а не абстрактно для любого компа! С уклоном для STM32. Где-то читал ваш блог, там тоже много интересного.
Вот здесь тоже интересно почему?
y = *((uint8_t *)(&x));
Если ранее мы определили 4 байта и обозвали их Х. Таким образом, что в Х лежит адрес на эти 4 байта, т.е. на первый байт. Компилятор знает, что от этого адреса надо отсчитать 4 байта (32 бита), чтобы можно было добраться до "свободной" памяти не испортив то, что до этого записано.
А потом вот этот приведение к типу?
Все. Пока писал - понял. Последние три байта он выкинет (освободит) под другие задачи. Т.е. после этой конструкции у нас останется Х с одинм байтом. ?
А запись происходит, как вы указали от младшего к старшему, т.к. адреса тоже идут по порядку. Примерно так:
0хF4
0х01
0х00
0х00
Или так:
0хF4; 0х01; 0х00; 0х00.
А если к ним добавить адреса, то будет примерно так (адреса абстрактные):
0х000001 0хF4
0х000002 0х01
0х000003 0х00
0х000004 0х00
И если потом увидеть этот код в HEX файле, то читать свое число надо снизу вверх, или справа налево, чтобы вернуться к исходному?
Вот здесь тоже интересно почему?
y = *((uint8_t *)(&x));
Если ранее мы определили 4 байта и обозвали их Х. Таким образом, что в Х лежит адрес на эти 4 байта, т.е. на первый байт. Компилятор знает, что от этого адреса надо отсчитать 4 байта (32 бита), чтобы можно было добраться до "свободной" памяти не испортив то, что до этого записано.
А потом вот этот приведение к типу?
Все. Пока писал - понял. Последние три байта он выкинет (освободит) под другие задачи. Т.е. после этой конструкции у нас останется Х с одинм байтом. ?
А запись происходит, как вы указали от младшего к старшему, т.к. адреса тоже идут по порядку. Примерно так:
0хF4
0х01
0х00
0х00
Или так:
0хF4; 0х01; 0х00; 0х00.
А если к ним добавить адреса, то будет примерно так (адреса абстрактные):
0х000001 0хF4
0х000002 0х01
0х000003 0х00
0х000004 0х00
И если потом увидеть этот код в HEX файле, то читать свое число надо снизу вверх, или справа налево, чтобы вернуться к исходному?