HAL公共资源
在GR551x的HAL驱动中,各个外设模块使用的公共枚举、结构体、宏定义在gr55xx_hal_def.h中,包括如下内容:
- HAL状态:HAL状态用于除布尔函数及中断处理函数之外的API接口,表示API的运行状态。其定义如下:
typedef enum { HAL_OK = 0x00U, HAL_ERROR = 0x01U, HAL_BUSY = 0x02U, HAL_TIMEOUT = 0x03 } hal_status_t;
- HAL锁:HAL锁用于避免共享资源的非法访问,其定义如下:
typedef enum { HAL_UNLOCKED = 0x00U, HAL_LOCKED = 0x01 } hal_lock_t;
- 公共宏:主要包括超时机制中的最大延时宏、外设与DMA实例句柄的连接宏、用于消除未使用参数编译警报的宏等,其定义如下:
#define HAL_MAX_DELAY 0xFFFFFFFFU #define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD_, __DMA_HANDLE_) \ do{ \ (__HANDLE__)->__PPP_DMA_FIELD_ = &(__DMA_HANDLE_); \ (__DMA_HANDLE_).p_parent = (__HANDLE__); \ } while(0U) #define UNUSED(x) ((void)(x))