summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Kirik (snegovick) <snegovick@uprojects.org>2026-01-07 21:08:39 +0300
committerKonstantin Kirik (snegovick) <snegovick@uprojects.org>2026-01-07 21:08:39 +0300
commit392ae8c766bf1fca81d41443f2070d82e7b95832 (patch)
treee3d2a3dd0545fb22082304523cff6989760dce22
parent305f234c12bda7025d9cb4bcabae77d5e52ea61a (diff)
Add SET/CLEAR bit and reg macros
-rw-r--r--os/arch/aarch32/armv7e_m/stm32f769/sys_io.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/os/arch/aarch32/armv7e_m/stm32f769/sys_io.h b/os/arch/aarch32/armv7e_m/stm32f769/sys_io.h
index 9f70d641..77a33dd1 100644
--- a/os/arch/aarch32/armv7e_m/stm32f769/sys_io.h
+++ b/os/arch/aarch32/armv7e_m/stm32f769/sys_io.h
@@ -10,6 +10,14 @@
#define BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))
#endif
+#define SET_BIT(r, b) (r |= (b))
+#define CLEAR_BIT(r, b) (r &= ~(b))
+#define READ_BIT(r, b) ((r) & (b))
+#define CLEAR_REG(r) ((r) = (0x0))
+#define WRITE_REG(r, v) ((r) = (v))
+#define READ_REG(r) ((r))
+#define MODIFY_REG(r, clear_mask, set_mask) WRITE_REG((r), (((READ_REG(r)) & (~(clear_mask))) | (set_mask)))
+
static inline uint8_t sys_read8(uint32_t addr)
{
return *(volatile uint8_t *)addr;
@@ -66,7 +74,7 @@ static inline void sys_clear_bit(uint32_t addr, unsigned int bit)
static inline int sys_test_bit(uint32_t addr, unsigned int bit)
{
- uint32_t temp = *(volatile uint32_t *)addr;
+ volatile uint32_t temp = *(volatile uint32_t *)addr;
return temp & (1 << bit);
}