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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|