Added core tools, added ADC abstractions for different registers

This commit is contained in:
Ea-r-th
2025-10-12 20:53:40 -07:00
parent c76dbee94c
commit cba6c00562
13 changed files with 291 additions and 95 deletions

View File

@@ -28,8 +28,10 @@ enum class SHAL_Result{
};
typedef bool (*condition_fn_t)(void);
#define SHAL_CALL(func) \
if(func != SHAL_Result::OKAY){ \
return SHAL_Result::ERROR; \
}
#define SHAL_WAIT_FOR_CONDITION_US(cond, timeout_us) \
SHAL_wait_for_condition_us([&](){ return (cond); }, (timeout_us))
@@ -68,6 +70,17 @@ bool SHAL_wait_for_condition_ms(Condition cond, uint32_t timeout_ms) {
return false; // timeout
}
void SHAL_set_bits(volatile uint32_t* reg, uint32_t size, uint32_t bits, uint32_t offset){
uint32_t mask = (1 << (size)) - 1;
*reg &= ~(mask << offset);
*reg |= bits << offset;
}
void SHAL_apply_bitmask(volatile uint32_t* reg, uint32_t mask){
*reg &= ~(mask);
*reg |= mask;
}
//---------------------------------------------------------