aboutsummaryrefslogtreecommitdiff
path: root/driver_fw/include/global.h
diff options
context:
space:
mode:
Diffstat (limited to 'driver_fw/include/global.h')
-rw-r--r--driver_fw/include/global.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/driver_fw/include/global.h b/driver_fw/include/global.h
new file mode 100644
index 0000000..df07598
--- /dev/null
+++ b/driver_fw/include/global.h
@@ -0,0 +1,56 @@
+
+#ifndef __GLOBAL_H__
+#define __GLOBAL_H__
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <assert.h>
+#include <string.h>
+
+/* The IRQ header must be included before stm32_device.h since ST defines a bunch of messy macros there. */
+#include <stm32_irqs.h> /* Header generated from stm32***_startup.s in Makefile */
+
+#include <stm32g0xx.h>
+#include <core_cm0plus.h>
+
+#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
+
+#define AFRL(pin, val) ((val) << ((pin)*4))
+#define AFRH(pin, val) ((val) << (((pin)-8)*4))
+#define AF(pin) (2<<(2*(pin)))
+#define OUT(pin) (1<<(2*(pin)))
+#define IN(pin) (0)
+#define ANALOG(pin) (3<<(2*(pin)))
+#define CLEAR(pin) (~(3<<(2*(pin))))
+#define PULLUP(pin) (1<<(2*pin))
+#define PULLDOWN(pin) (2<<(2*pin))
+#define BSRR_CLEAR(pin) ((1<<pin)<<16)
+#define BSRR_SET(pin) (1<<pin)
+#define BSRR_VALUE(pin, value) ((((!(value))<<pin)<<16) | ((!!(value))<<pin))
+
+#ifndef SYSTICK_INTERVAL_US
+#define SYSTICK_INTERVAL_US 1000
+#endif /* SYSTICK_INTERVAL_US */
+
+
+enum ErrorCode {
+ ERR_SUCCESS = 0,
+ ERR_TIMEOUT,
+ ERR_PHYSICAL_LAYER,
+ ERR_FRAMING,
+ ERR_PROTOCOL,
+ ERR_DMA,
+ ERR_BUSY,
+ ERR_BUFFER_OVERFLOW,
+ ERR_RX_OVERRUN,
+ ERR_TX_OVERRUN,
+};
+
+typedef enum ErrorCode ErrorCode;
+
+void delay_us(int duration_us);
+
+extern volatile uint64_t sys_time_us;
+
+#endif /* __GLOBAL_H__ */