bit.h File Reference

Bit access macros for Cortex-M based CPUs. More...

Detailed Description

Bit access macros for Cortex-M based CPUs.

Author
Joakim NohlgÄrd joaki.nosp@m.m.no.nosp@m.hlgar.nosp@m.d@ei.nosp@m.stec..nosp@m.se

Definition in file bit.h.

#include <stdint.h>
#include "cpu.h"
+ Include dependency graph for bit.h:

Go to the source code of this file.

#define CPU_HAS_BITBAND   1 || 0 (1 for Cortex-M3 and up, 0 for Cortex-M0)
 Flag for telling if the CPU has hardware bit band support.
 

Bit manipulation functions

static volatile void * bitband_addr (volatile void *ptr, uintptr_t bit)
 Convert bit band region address and bit number to bit band alias address. More...
 
static void bit_set32 (volatile uint32_t *ptr, uint8_t bit)
 Set a single bit in the 32 bit word pointed to by ptr. More...
 
static void bit_set16 (volatile uint16_t *ptr, uint8_t bit)
 Set a single bit in the 16 bit word pointed to by ptr. More...
 
static void bit_set8 (volatile uint8_t *ptr, uint8_t bit)
 Set a single bit in the 8 bit byte pointed to by ptr. More...
 
static void bit_clear32 (volatile uint32_t *ptr, uint8_t bit)
 Clear a single bit in the 32 bit word pointed to by ptr. More...
 
static void bit_clear16 (volatile uint16_t *ptr, uint8_t bit)
 Clear a single bit in the 16 bit word pointed to by ptr. More...
 
static void bit_clear8 (volatile uint8_t *ptr, uint8_t bit)
 Clear a single bit in the 8 bit byte pointed to by ptr. More...
 

Function Documentation

◆ bit_clear16()

static void bit_clear16 ( volatile uint16_t *  ptr,
uint8_t  bit 
)
inlinestatic

Clear a single bit in the 16 bit word pointed to by ptr.

The effect is the same as for the following snippet:

*ptr &= ~(1 << bit);

There is a read-modify-write cycle occurring within the core, but this cycle is atomic and can not be disrupted by IRQs

Parameters
[in]ptrpointer to target word
[in]bitbit number within the word

Definition at line 155 of file bit.h.

◆ bit_clear32()

static void bit_clear32 ( volatile uint32_t *  ptr,
uint8_t  bit 
)
inlinestatic

Clear a single bit in the 32 bit word pointed to by ptr.

The effect is the same as for the following snippet:

*ptr &= ~(1 << bit);

There is a read-modify-write cycle occurring within the core, but this cycle is atomic and can not be disrupted by IRQs

Parameters
[in]ptrpointer to target word
[in]bitbit number within the word

Definition at line 135 of file bit.h.

◆ bit_clear8()

static void bit_clear8 ( volatile uint8_t *  ptr,
uint8_t  bit 
)
inlinestatic

Clear a single bit in the 8 bit byte pointed to by ptr.

The effect is the same as for the following snippet:

*ptr &= ~(1 << bit);

There is a read-modify-write cycle occurring within the core, but this cycle is atomic and can not be disrupted by IRQs

Parameters
[in]ptrpointer to target byte
[in]bitbit number within the byte

Definition at line 175 of file bit.h.

◆ bit_set16()

static void bit_set16 ( volatile uint16_t *  ptr,
uint8_t  bit 
)
inlinestatic

Set a single bit in the 16 bit word pointed to by ptr.

The effect is the same as for the following snippet:

*ptr |= (1 << bit);

There is a read-modify-write cycle occurring within the core, but this cycle is atomic and can not be disrupted by IRQs

Parameters
[in]ptrpointer to target word
[in]bitbit number within the word

Definition at line 95 of file bit.h.

◆ bit_set32()

static void bit_set32 ( volatile uint32_t *  ptr,
uint8_t  bit 
)
inlinestatic

Set a single bit in the 32 bit word pointed to by ptr.

The effect is the same as for the following snippet:

*ptr |= (1 << bit);

There is a read-modify-write cycle occurring within the core, but this cycle is atomic and can not be disrupted by IRQs

Parameters
[in]ptrpointer to target word
[in]bitbit number within the word

Definition at line 75 of file bit.h.

◆ bit_set8()

static void bit_set8 ( volatile uint8_t *  ptr,
uint8_t  bit 
)
inlinestatic

Set a single bit in the 8 bit byte pointed to by ptr.

The effect is the same as for the following snippet:

*ptr |= (1 << bit);

There is a read-modify-write cycle occurring within the core, but this cycle is atomic and can not be disrupted by IRQs

Parameters
[in]ptrpointer to target byte
[in]bitbit number within the byte

Definition at line 115 of file bit.h.

◆ bitband_addr()

static volatile void* bitband_addr ( volatile void *  ptr,
uintptr_t  bit 
)
inlinestatic

Convert bit band region address and bit number to bit band alias address.

Parameters
[in]ptrbase address in non bit banded memory
[in]bitbit number within the word
Returns
Address of the bit within the bit band memory region

Definition at line 54 of file bit.h.