diff options
Diffstat (limited to 'driver_fw/include/global.h')
-rw-r--r-- | driver_fw/include/global.h | 56 |
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__ */ |