#pragma once struct pdmout { volatile uint16_t amplitude; volatile uint16_t flags; }; #define PDMOUT_FLAG_ENABLE_pos 0 #define PDMOUT_FLAG_ENABLE_msk (1 << PDMOUT_FLAG_ENABLE_pos) struct square { volatile uint16_t period; volatile uint16_t high_val; volatile uint16_t low_val; volatile uint16_t output_address; volatile uint16_t flags; }; #define SQUARE_FLAG_ENABLE_pos 0 #define SQUARE_FLAG_ENABLE_msk (1 << SQUARE_FLAG_ENABLE_pos)