Files
player/Project/Src/USB/USB_APP/usb_bsp.c

135 lines
3.3 KiB
C
Raw Normal View History

2025-06-27 00:32:57 +08:00
#include "usb_bsp.h"
#include "delay.h"
//////////////////////////////////////////////////////////////////////////////////
2025-07-05 19:47:28 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
//ALIENTEK STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//USB-BSP <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2016/1/21
//<2F><EFBFBD><E6B1BE>V1.0
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾ 2009-2019
2025-06-27 00:32:57 +08:00
//All rights reserved
//*******************************************************************************
2025-07-05 19:47:28 +08:00
//<2F>޸<EFBFBD><DEB8><EFBFBD>Ϣ
//<2F><>
2025-06-27 00:32:57 +08:00
//////////////////////////////////////////////////////////////////////////////////
2025-07-05 19:47:28 +08:00
//USB OTG <20>ײ<EFBFBD>IO<49><4F>ʼ<EFBFBD><CABC>
//pdev:USB OTG<54>ں˽ṹ<CBBD><E1B9B9>ָ<EFBFBD><D6B8>
2025-06-27 00:32:57 +08:00
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB , ENABLE);
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_OTG_HS, ENABLE) ;
GPIO_PinAFConfig(GPIOB,GPIO_PinSource14,GPIO_AF_OTG2_FS) ;
GPIO_PinAFConfig(GPIOB,GPIO_PinSource15,GPIO_AF_OTG2_FS) ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
2025-07-05 19:47:28 +08:00
//USB OTG <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>USB FS<46>ж<EFBFBD>
//pdev:USB OTG<54>ں˽ṹ<CBBD><E1B9B9>ָ<EFBFBD><D6B8>
2025-06-27 00:32:57 +08:00
void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
#ifdef USE_USB_OTG_HS
NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_IRQn;
#else
NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn;
#endif
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
#ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_EP1_OUT_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_EP1_IN_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
#endif
}
2025-07-05 19:47:28 +08:00
//USB OTG <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>USB FS<46>ж<EFBFBD>
//pdev:USB OTG<54>ں˽ṹ<CBBD><E1B9B9>ָ<EFBFBD><D6B8>
2025-06-27 00:32:57 +08:00
void USB_OTG_BSP_DisableInterrupt(void)
{
}
2025-07-05 19:47:28 +08:00
//USB OTG <20>˿ڹ<CBBF><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>õ<EFBFBD>)
//pdev:USB OTG<54>ں˽ṹ<CBBD><E1B9B9>ָ<EFBFBD><D6B8>
//state:0,<2C>ϵ<EFBFBD>;1,<2C>ϵ<EFBFBD>
2025-06-27 00:32:57 +08:00
void USB_OTG_BSP_DriveVBUS(USB_OTG_CORE_HANDLE *pdev, uint8_t state)
{
}
2025-07-05 19:47:28 +08:00
//USB_OTG <20>˿ڹ<CBBF><DAB9><EFBFBD>IO<49><4F><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>õ<EFBFBD>)
//pdev:USB OTG<54>ں˽ṹ<CBBD><E1B9B9>ָ<EFBFBD><D6B8>
2025-06-27 00:32:57 +08:00
void USB_OTG_BSP_ConfigVBUS(USB_OTG_CORE_HANDLE *pdev)
{
}
2025-07-05 19:47:28 +08:00
//USB_OTG us<75><73><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>̲<EFBFBD><CCB2><EFBFBD>SYSTEM<45>ļ<EFBFBD><C4BC>е<EFBFBD>delay.c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>delay_us<75><73><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
//<2F>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD>̲<EFBFBD><CCB2>õ<EFBFBD><C3B5>Ƕ<EFBFBD>ʱ<EFBFBD><CAB1>2<EFBFBD><32>ʵ<EFBFBD>ֵ<EFBFBD>.
//usec:Ҫ<><D2AA>ʱ<EFBFBD><CAB1>us<75><73>.
2025-06-27 00:32:57 +08:00
void USB_OTG_BSP_uDelay (const uint32_t usec)
{
uint32_t count = 0;
const uint32_t utime = (14 * usec);
do
{
if ( ++count > utime )
{
return ;
}
}
while (1);
}
2025-07-05 19:47:28 +08:00
//USB_OTG ms<6D><73><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>̲<EFBFBD><CCB2><EFBFBD>SYSTEM<45>ļ<EFBFBD><C4BC>е<EFBFBD>delay.c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>delay_ms<6D><73><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
//<2F>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD>̲<EFBFBD><CCB2>õ<EFBFBD><C3B5>Ƕ<EFBFBD>ʱ<EFBFBD><CAB1>2<EFBFBD><32>ʵ<EFBFBD>ֵ<EFBFBD>.
//msec:Ҫ<><D2AA>ʱ<EFBFBD><CAB1>ms<6D><73>.
2025-06-27 00:32:57 +08:00
void USB_OTG_BSP_mDelay (const uint32_t msec)
{
USB_OTG_BSP_uDelay(msec * 1000);
}