小编Ion*_*rba的帖子

如何使用HAL锁定和解锁功能?为什么?

我正在尝试理解由另一个程序员编写的代码.它使用I²C通信在STM32微控制器的EEPROM上写入数据.

一般来说,我理解他的代码是如何工作的,但我无法理解他为什么使用HAL_LOCKHAL_UNCLOCK函数.

这些是这些方法的代码:

typedef enum
{
    HAL_UNLOCKED = 0x00U,
    HAL_LOCKED   = 0x01U
} HAL_LockTypeDef;


#if (USE_RTOS == 1)

    /* Reserved for future use */
    #error "USE_RTOS should be 0 in the current HAL release"

#else

  #define __HAL_LOCK(__HANDLE__)                 \
      do{                                        \
          if((__HANDLE__)->Lock == HAL_LOCKED)   \
          {                                      \
             return HAL_BUSY;                    \
          }                                      \
          else                                   \
          {                                      \
             (__HANDLE__)->Lock = HAL_LOCKED;    \
          }                                      \
      } while (0)


  #define __HAL_UNLOCK(__HANDLE__)              \
      do{                                       \
          (__HANDLE__)->Lock = HAL_UNLOCKED;    \
      } …
Run Code Online (Sandbox Code Playgroud)

c hal stm32 i2c

4
推荐指数
1
解决办法
2508
查看次数

标签 统计

c ×1

hal ×1

i2c ×1

stm32 ×1