Лучшая практика для ссылки на периферийные устройства встроенной системы?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Лучшая практика для ссылки на периферийные устройства встроенной системы?

Сообщение Anonymous »

Небольшая напыщенная речь... но также вопрос, как аккуратно ссылаться на адреса встроенной системы.
Пусть будет встроенная система такая, что:
Он имеет датчик температуры, расположенный по адресу 0x8000000, что обеспечивает 32-битное значение только для чтения.
Как лучше всего записать буквальный адрес для этого датчика? >
Это:

Код: Выделить всё

volatile  const uint32_t *const temperature_sensor = reinterpret_cast (0x80000000);

// volatile .. because the value that of at this address could change every time this address is read from (tells the compiler to read every single time. No clever optimizations).
// const ... because it is readonly, it is a sensor, writing to it doesn't do anything bad (no magic smoke) but is most likely a programming error. Save some headaches troubleshooting, attempts to write to it should throw a compilation error.

// *const because it is a constant pointer, attempts to change what memory address this points to should throw a compilation error.
...

uint32_t current_temperature = *temperature_sensor; // Reading from the temperature_sensor.
Мне здесь не нравится reinterpret_cast. Это работает? да, но это противоречит руководству по стилю, как и приведения в стиле C. static_casts не может выполнять преобразование между литералом без знака и указателем. И единственный литерал указателя C++ — это nullptr.
Разговор:

Есть ли лучший способ?

Подробнее здесь: https://stackoverflow.com/questions/786 ... eripherals
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»