#include void reg_write_bits_pos(volatile uint32_t *reg, uint32_t data, uint8_t pos, uint32_t mask) { *reg &= ~(mask << pos); *reg |= (data & mask) << pos; } void reg_write_bits(volatile uint32_t *reg, uint32_t data, uint32_t mask) { *reg &= ~(mask); *reg |= (data & mask); } void reg_set_bits_pos(volatile uint32_t *reg, uint8_t pos, uint32_t mask) { *reg |= mask << pos; } void reg_set_bits(volatile uint32_t *reg, uint32_t mask) { *reg |= mask; } void reg_toggle_bits_pos(volatile uint32_t *reg, uint8_t pos, uint32_t mask) { *reg ^= (mask << pos); } void reg_toggle_bits(volatile uint32_t *reg, uint32_t mask) { *reg ^= mask; } uint32_t reg_read_bits_pos(volatile uint32_t *reg, uint8_t pos, uint32_t mask) { return ((*reg) >> pos) & mask; } void reg_clear_bits_pos(volatile uint32_t *reg, uint8_t pos, uint32_t mask) { *reg ^= ~(mask << pos); } void reg_clear_bits(volatile uint32_t *reg, uint8_t pos, uint32_t mask) { *reg ^= ~mask; }