你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

USB internal IP DMA

[复制链接]
王斯 提问时间:2025-12-25 11:44 / 未解决

大佬们 为什么我的USB不开启internal IP DMA 设备可以正常枚举,开启了后就不行了,是不是哪里需要手动添加配置程序

/ USER CODE BEGIN Header /

/**


  • @file usb_otg.c

  • @brief This file provides code for the configuration

  • of the USB_OTG instances.

  • @attention

  • Copyright (c) 2025 STMicroelectronics.

  • All rights reserved.

  • This software is licensed under terms that can be found in the LICENSE file

  • in the root directory of this software component.

  • If no LICENSE file comes with this software, it is provided AS-IS.


*/

/ USER CODE END Header /

/ Includes ------------------------------------------------------------------/

include "usb_otg.h"

/ USER CODE BEGIN 0 /

/ USER CODE END 0 /

PCD_HandleTypeDef hpcd_USB_OTG_HS1;

/ USB1_OTG_HS init function /

void MX_USB1_OTG_HS_PCD_Init(void)

{

/ USER CODE BEGIN USB1_OTG_HS_Init 0 /

memset(&hpcd_USB_OTG_HS1, 0x0, sizeof(PCD_HandleTypeDef)); / USER CODE END USB1_OTG_HS_Init 0 /

/ USER CODE BEGIN USB1_OTG_HS_Init 1 /

/ USER CODE END USB1_OTG_HS_Init 1 /

hpcd_USB_OTG_HS1.Instance = USB1_OTG_HS;

hpcd_USB_OTG_HS1.Init.dev_endpoints = 9;

hpcd_USB_OTG_HS1.Init.speed = PCD_SPEED_HIGH;

hpcd_USB_OTG_HS1.Init.phy_itface = USB_OTG_HS_EMBEDDED_PHY;

hpcd_USB_OTG_HS1.Init.Sof_enable = DISABLE;

hpcd_USB_OTG_HS1.Init.low_power_enable = DISABLE;

hpcd_USB_OTG_HS1.Init.lpm_enable = DISABLE;

hpcd_USB_OTG_HS1.Init.use_dedicated_ep1 = DISABLE;

hpcd_USB_OTG_HS1.Init.vbus_sensing_enable = DISABLE;

hpcd_USB_OTG_HS1.Init.dma_enable = DISABLE;

if (HAL_PCD_Init(&hpcd_USB_OTG_HS1) != HAL_OK)

{

Error_Handler(); }

/ USER CODE BEGIN USB1_OTG_HS_Init 2 /

HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_HS1, 0x120);

HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_HS1, 0, 0x40);

HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_HS1, 1, 0x400);

/ USER CODE END USB1_OTG_HS_Init 2 /

}

void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle)

{

RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};

if(pcdHandle->Instance==USB1_OTG_HS)

{

/ USER CODE BEGIN USB1_OTG_HS_MspInit 0 /

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

{

    Error_Handler();

}

/ USER CODE END USB1_OTG_HS_MspInit 0 /

/** Initializes the peripherals clock

*/

PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USBOTGHS1;

PeriphClkInitStruct.UsbPhy1ClockSelection = RCC_USBOTGHS1CLKSOURCE_HSE_DIV2;

PeriphClkInitStruct.UsbOtgHs1ClockSelection = RCC_USBPHY1REFCLKSOURCE_OTGPHY1;

if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)

{

Error_Handler();

}

/ Enable VDDUSB /

HAL_PWREx_EnableVddUSB();

/ USB1_OTG_HS clock enable /

__HAL_RCC_USB1_OTG_HS_CLK_ENABLE();

__HAL_RCC_USB1_OTG_HS_PHY_CLK_ENABLE();

/ USB1_OTG_HS interrupt Init /

HAL_NVIC_SetPriority(USB1_OTG_HS_IRQn, 0, 0);

HAL_NVIC_EnableIRQ(USB1_OTG_HS_IRQn); / USER CODE BEGIN USB1_OTG_HS_MspInit 1 /

HAL_Delay(1);

USB1_HS_PHYC->USBPHYC_CR &= ~USB_USBPHYC_CR_FSEL;

USB1_HS_PHYC->USBPHYC_CR |= USB_USBPHYC_CR_OTGDISABLE0 | USB_USBPHYC_CR_FSEL_1 | USB_USBPHYC_CR_CMN | USB_USBPHYC_CR_RETENABLEN1;

__HAL_RCC_USB1_OTG_HS_PHY_CLK_ENABLE(); / USER CODE END USB1_OTG_HS_MspInit 1 /

}

}

void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle)

{

if(pcdHandle->Instance==USB1_OTG_HS)

{

/ USER CODE BEGIN USB1_OTG_HS_MspDeInit 0 /

/ USER CODE END USB1_OTG_HS_MspDeInit 0 /

/ Peripheral clock disable /

__HAL_RCC_USB1_OTG_HS_CLK_DISABLE();

__HAL_RCC_USB1_OTG_HS_PHY_CLK_DISABLE();

/ Disable VDDUSB /

HAL_PWREx_DisableVddUSB();

/ USB1_OTG_HS interrupt Deinit /

HAL_NVIC_DisableIRQ(USB1_OTG_HS_IRQn); / USER CODE BEGIN USB1_OTG_HS_MspDeInit 1 /

/ USER CODE END USB1_OTG_HS_MspDeInit 1 /

}

}

/ USER CODE BEGIN 1 /

/ USER CODE END 1 /

收藏 评论0 发布时间:2025-12-25 11:44

举报

0个回答

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版