MyLibs 1.0
Расширенные библиотеки для STM32
Loading...
Searching...
No Matches
Bit access defines

Макросы и typedef'ы для работы с битами в unsigned типах. More...

Collaboration diagram for Bit access defines:

Classes

union  uint8_BitTypeDef
union  uint16_BitTypeDef
union  uint32_BitTypeDef
union  uint64_BitTypeDef

Macros

#define uint8_bit(_uint8_, _bit_)
 Получить n-й бит из uint8_t.
#define uint16_bit(_uint8_, _bit_)
 Получить n-й бит из uint16_t.
#define uint32_bit(_uint8_, _bit_)
 Получить n-й бит из uint32_t.
#define uint64_bit(_uint8_, _bit_)
 Получить n-й бит из uint64_t.

Detailed Description

Макросы и typedef'ы для работы с битами в unsigned типах.

В этом файле определены макросы для получения значения конкретного бита^

Особенности использования:

  • Индекс бита должен быть константой на этапе компиляции. Пример верного использования:
    uint8_t val = 0x05;
    uint8_t b2 = uint8_bit(val, 2); // Получить бит 2
    uint8_bit(val, 6) = 1; // Записать бит 6
    #define uint8_bit(_uint8_, _bit_)
    Получить n-й бит из uint8_t.
    Definition bit_access.h:129
  • Нельзя использовать переменные в качестве индекса:
    uint8_t i = 2;
    uint8_bit(val, i); // Не сработает!
  • Макросы возвращают 0 или 1.
  • Доступ реализован через приведение к union с битовыми полями, поэтому это безопасный способ работы с отдельными битами без ручного сдвига и маскирования.

Macro Definition Documentation

◆ uint8_bit

#define uint8_bit ( _uint8_,
_bit_ )
Value:
(*(uint8_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_

Получить n-й бит из uint8_t.

Parameters
_uint8_Переменная типа uint8_t
_bit_Константный номер бита (0..7)
Returns
Значение выбранного бита (0 или 1)
Note
Индекс бита должен быть известен на этапе компиляции!

Definition at line 129 of file bit_access.h.

◆ uint16_bit

#define uint16_bit ( _uint8_,
_bit_ )
Value:
(*(uint16_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_

Получить n-й бит из uint16_t.

Parameters
_uint16_Переменная типа uint16_t
_bit_Константный номер бита (0..15)
Returns
Значение выбранного бита (0 или 1)
Note
Индекс бита должен быть известен на этапе компиляции!

Definition at line 137 of file bit_access.h.

◆ uint32_bit

#define uint32_bit ( _uint8_,
_bit_ )
Value:
(*(uint32_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_

Получить n-й бит из uint32_t.

Parameters
_uint32_Переменная типа uint32_t
_bit_Константный номер бита (0..31)
Returns
Значение выбранного бита (0 или 1)
Note
Индекс бита должен быть известен на этапе компиляции!

Definition at line 145 of file bit_access.h.

◆ uint64_bit

#define uint64_bit ( _uint8_,
_bit_ )
Value:
(*(uint64_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_

Получить n-й бит из uint64_t.

Parameters
_uint64_Переменная типа uint64_t
_bit_Константный номер бита (0..63)
Returns
Значение выбранного бита (0 или 1)
Note
Индекс бита должен быть известен на этапе компиляции!

Definition at line 153 of file bit_access.h.