rt1052 usb速率_rt1052下的usb host

本文档介绍了在RT1052平台上实现USB主机功能的步骤,包括初始化GPIO、中断处理、连接状态管理和数据传输。通过HAL_HCD_MspInit和HAL_HCD_MspDeInit设置USB_OTG_FS的GPIO和时钟。OTG_FS_IRQHandler处理中断事件,HAL_HCD_SOF_Callback提供定时器功能。同时,驱动提供了连接和断开设备的回调函数,以及数据传输和管道管理的实现,如drv_reset_port、drv_pipe_xfer等。
摘要由CSDN通过智能技术生成

#include #include "board.h"

#define OTG_FS_PORT 1

static HCD_HandleTypeDef _stm_hhcd_fs;

static struct rt_completion urb_completion;

void HAL_HCD_MspInit(HCD_HandleTypeDef *hcdHandle)

{

GPIO_InitTypeDef GPIO_InitStruct;

if (hcdHandle->Instance == USB_OTG_FS)

{

/**USB_OTG_FS GPIO Configuration

PA9 ------> USB_OTG_FS_VBUS

PA10 ------> USB_OTG_FS_ID

PA11 ------> USB_OTG_FS_DM

PA12 ------> USB_OTG_FS_DP

*/

__HAL_RCC_GPIOA_CLK_ENABLE();

#ifdef USBH_USING_VBUS

GPIO_InitStruct.Pin = GPIO_PIN_9;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

#endif

GPIO_InitStruct.Pin = GPIO_PIN_12 | GPIO_PIN_11;

GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/* Peripheral clock enable */

__HAL_RCC_USB_OTG_FS_CLK_ENABLE();

/* Peripheral interrupt init */

HAL_NVIC_SetPriority(OTG_FS_IRQn, 5, 0);

HAL_NVIC_EnableIRQ(OTG_FS_IRQn);

}

}

void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hcdHandle)

{

if (hcdHandle->Instance == USB_OTG_FS)

{

/* Peripheral clock disable */

__HAL_RCC_USB_OTG_FS_CLK_DISABLE();

/**USB_OTG_FS GPIO Configuration

PA9 ------> USB_OTG_FS_VBUS

PA10 ------> USB_OTG_FS_ID

PA11 ------> USB_OTG_FS_DM

PA12 ------>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值