【C】PCD(Peripheral Controller Driver)

PCD(Peripheral Controller Driver) 在STM32 HAL库体系中,指物理控制层驱动,也就是USB控制器外设的直接驱动层。


【详解】

1. PCD是什么?
  • 英文全称:Peripheral Controller Driver
  • 功能:直接和USB控制器硬件寄存器打交道,收发原始USB包,响应中断,控制端点,管理缓冲等。
  • HAL中的体现:比如 HAL_PCD_IRQHandlerHAL_PCD_EP_TransmitHAL_PCD_EP_ReceiveHAL_PCD_DataOutCallback 等,全部归属于PCD层。
2. 它在固件架构中的位置
[应用/协议层]
    ↑
[USB设备核心库 (USBD_xxx)]
    ↑
[PCD (Peripheral Controller Driver)]
    ↑
[硬件USB控制器]
  • PCD 负责和硬件直接对接。
  • USB Device库(USBD_xxx)更偏协议/类,比如CDC/HID。
  • 应用层调用USBD API,不直接碰PCD。
3. PCD的作用
  • 响应USB中断(如OUT包到达、IN包发送完毕、SETUP包到达等)。
  • 管理端点的状态、数据缓存、传输开启/结束。
  • 向上(USBD_LL层)报告事件,向下(硬件)操作控制器寄存器。
4. 为什么叫“物理控制”
  • **“物理”**在这里指的是“物理接口外设”,即MCU芯片内部的USB控制器模块,而不是物理线缆。
  • **“控制”**指的是对USB协议各个端点、缓冲、事件的管理。
5. ** 代码里的体现**
  • usbd_conf.c 和相关的 PCD_HandleTypeDef 都属于PCD范畴。
  • 你在HAL库里看到带“PCD”的API(如HAL_PCD_*),都是直接操作USB硬件控制器的。

【小结】

PCD就是STM32 HAL USB库中的“物理控制层驱动”,管理USB外设控制器,是固件中最底层、最贴近硬件的一层。


你可能感兴趣的:(C,Servo,c语言,开发语言)