// // Created by zong on 2/3/23. // // this file will contain some global variable, // when use modify and use this variable should be very careful. // All places change these variables should add comment in this file. #ifndef STM32U5_GLOBAL_VARIABLE_H #define STM32U5_GLOBAL_VARIABLE_H #define __WARN_UNUSED_RESULT __attribute__((warn_unused_result)) #define __UNUSED __attribute__((unused)) // #define IF_ERROR_RETURN(x) if (x != HAL_OK) return x #define IF_ERROR_STUCK(x) \ if (x != HAL_OK) \ while (1) {} #include #include #include extern uint32_t system_core_clock; extern uint32_t system_core_clock_mhz; extern uint32_t rtc_clock; void update_system_clock(uint32_t system_clock); void update_hclk(uint32_t hclk); typedef enum { HAL_OK = 0, // ok HAL_TIMEOUT, // timeout (failed when wait for something) QUEUE_EMPTY, // the queue is empty QUEUE_ERROR_REINIT, // the queue is already init_old QUEUE_ERROR_NO_ENOUGH_SPACE, // not enough space to push data QUEUE_ERROR_NULL_DATA_POINTER, // the data pointer is NULL QUEUE_ERROR_NO_LINE, // no line in the queue QUEUE_ERROR_BUFFER_OVERFLOW, // the user data buffer is not enough to store the data QUEUE_ERROR_NO_ENOUGH_DATA, // the queue data is not enough to read QUEUE_ERROR_MALLOC_FAILED, // malloc failed when init_old the queue GPIO_ERROR_REINIT, // gpio init more than once I2C_BUSY, // i2c bus error I2C_GPIO_INIT_ERROR, // i2c port init_old error I2C_QUEUE_ERROR, // i2c queue error I2C_TIMEOUT, // i2c timeout I2C_ERROR, // i2c error DMA_STATUS_REINIT, // dma reinit DMA_STATUS_MALLOC_FAILED, // dam allocate link list space failed DMA_STATUS_INVALID_SIZE, // dma transfer size error. DMA_STATUS_NOT_ENABLED, // dma not enable SDMMC_BUSY, // sdmmc busy SDMMC_ERROR, // sdmmc error SDMMC_CMD23_NOT_SUPPORT, // sd card not support cmd23 not support HAL_ERROR } hal_status_e; typedef enum { LL_DISABLE = 0, // disable for peripheral bit LL_ENABLE = 1, // enable for peripheral bit } ll_state_e; #define ll_high LL_ENABLE #define ll_low LL_DISABLE #endif // STM32U5_GLOBAL_VARIABLE_H