210 lines
4.3 KiB
C
210 lines
4.3 KiB
C
|
|
#include "sys.h"
|
|||
|
|
#include "delay.h"
|
|||
|
|
#include "usart.h"
|
|||
|
|
#include "led.h"
|
|||
|
|
#include "key.h"
|
|||
|
|
|
|||
|
|
#include "LCD.h"
|
|||
|
|
#include "Dis_Picture.h"
|
|||
|
|
#include "Text.h"
|
|||
|
|
#include "GBK_LibDrive.h"
|
|||
|
|
|
|||
|
|
#include "mpu.h"
|
|||
|
|
#include "malloc.h"
|
|||
|
|
#include "w25qxx.h"
|
|||
|
|
#include "sdmmc_sdcard.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
#include "usbd_core.h"
|
|||
|
|
#include "usbd_desc.h"
|
|||
|
|
#include "usbd_msc.h"
|
|||
|
|
#include "usbd_storage.h"
|
|||
|
|
|
|||
|
|
/*************************************************************************/
|
|||
|
|
|
|||
|
|
//USB<53><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Slave) ʵ<><CAB5>
|
|||
|
|
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41>⺯<EFBFBD><E2BAAF><EFBFBD>汾
|
|||
|
|
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*************************************************************************/
|
|||
|
|
|
|||
|
|
USBD_HandleTypeDef USBD_Device;
|
|||
|
|
extern PCD_HandleTypeDef hpcd;
|
|||
|
|
extern vu8 USB_STATUS_REG; //USB״̬
|
|||
|
|
extern vu8 bDeviceState; //USB<53><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
u8 tbuf[32];
|
|||
|
|
|
|||
|
|
|
|||
|
|
int main(void)
|
|||
|
|
{
|
|||
|
|
u8 offline_cnt=0;
|
|||
|
|
u8 tct=0;
|
|||
|
|
u8 USB_STA;
|
|||
|
|
u8 Divece_STA;
|
|||
|
|
uint64_t CardCap; //SD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Cache_Enable(); //<2F><><EFBFBD><EFBFBD>L1-Cache
|
|||
|
|
Stm32_Clock_Init(160,5,2,4); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,400Mhz
|
|||
|
|
HAL_Init(); //<2F><>ʼ<EFBFBD><CABC>HAL<41><4C>
|
|||
|
|
delay_init(400); //<2F><>ʱ<EFBFBD><CAB1>ʼ<EFBFBD><CABC>
|
|||
|
|
uart_init(115200); //<2F><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
|
|
|||
|
|
LED_Init(); //<2F><>ʼ<EFBFBD><CABC>LED
|
|||
|
|
KEY_Init(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
MPU_Memory_Protection(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش洢<D8B4><E6B4A2><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
LCD_Init(); //<2F><>ʼ<EFBFBD><CABC>2.0<EFBFBD><EFBFBD> 240x320 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LCD<43><44>ʾ
|
|||
|
|
GBK_Lib_Init(); //Ӳ<><D3B2>GBK<42>ֿ<EFBFBD><D6BF><EFBFBD>ʼ<EFBFBD><CABC>--(<28><><EFBFBD><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
LCD_Clear(WHITE); //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
W25QXX_Init();
|
|||
|
|
my_mem_init(SRAMIN); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ڲ<EFBFBD><DAB2>ڴ<EFBFBD><DAB4><EFBFBD>
|
|||
|
|
// my_mem_init(SRAMEX); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>ⲿ<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
|
|||
|
|
my_mem_init(SRAMDTCM); //<2F><>ʼ<EFBFBD><CABC>CCM<43>ڴ<EFBFBD><DAB4><EFBFBD>
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,10,RED," STM32H750 USB Card ");
|
|||
|
|
Draw_Font16B(16,30,BLUE," Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ");
|
|||
|
|
Draw_Font16B(16,50,BLUE," mcudev.taobao.com ");
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(W25QXX_ReadID()!=W25Q64)
|
|||
|
|
Draw_Font16B(16,70,RED,"W25Q64 Error!"); //<2F><><EFBFBD><EFBFBD>W25Q128<32><38><EFBFBD><EFBFBD>
|
|||
|
|
else //SPI FLASH <20><><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
Draw_Font16B(16,70,BLUE,"SPI FLASH Size:8MB");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(SD_Init())
|
|||
|
|
Draw_Font16B(16,90,RED,"SD Card Error!"); //<2F><><EFBFBD><EFBFBD>SD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
else //SD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
CardCap=(uint64_t)(SDCardInfo.LogBlockNbr)*(uint64_t)(SDCardInfo.LogBlockSize); //<2F><><EFBFBD><EFBFBD>SD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
sprintf((char*)tbuf,"SD Card Size: %u MB",CardCap>>20); //<2F><>ʾ<EFBFBD><EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,90,BLUE,tbuf); //<2F><>ʾ<EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
USBD_Init(&USBD_Device,&MSC_Desc,0); //<2F><>ʼ<EFBFBD><CABC>USB
|
|||
|
|
USBD_RegisterClass(&USBD_Device,USBD_MSC_CLASS); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
USBD_MSC_RegisterStorage(&USBD_Device,&USBD_DISK_fops); //ΪMSC<53><43><EFBFBD><EFBFBD><EFBFBD>ӻص<D3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
USBD_Start(&USBD_Device); //<2F><><EFBFBD><EFBFBD>USB
|
|||
|
|
HAL_PWREx_EnableUSBVoltageDetector();
|
|||
|
|
delay_ms(1800);
|
|||
|
|
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
if(USB_STA!=USB_STATUS_REG)//״̬<D7B4>ı<EFBFBD><C4B1><EFBFBD>
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if(USB_STATUS_REG&0x01)//<2F><><EFBFBD><EFBFBD>д
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,130,BLUE,"USB Writing...");//<2F><>ʾUSB<53><42><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
if(USB_STATUS_REG&0x02)//<2F><><EFBFBD>ڶ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,130,BLUE,"USB Reading...");//<2F><>ʾUSB<53><42><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(USB_STATUS_REG&0x04)
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,170,RED,"USB Write Err ");//<2F><>ʾд<CABE><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
else
|
|||
|
|
Draw_Font16B(16,170,BLUE," ");//<2F><>ʾд<CABE><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
|
|
|||
|
|
if(USB_STATUS_REG&0x08)
|
|||
|
|
|
|||
|
|
Draw_Font16B(16,190,RED,"USB Read Err ");//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
else
|
|||
|
|
Draw_Font16B(16,190,BLUE," ");//<2F><>ʾд<CABE><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
|
|
|||
|
|
USB_STA=USB_STATUS_REG;//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(Divece_STA!=bDeviceState)
|
|||
|
|
{
|
|||
|
|
if(bDeviceState==1)
|
|||
|
|
Draw_Font16B(16,150,BLUE,"USB Connected ");//<2F><>ʾUSB<53><42><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
else
|
|||
|
|
Draw_Font16B(16,150,BLUE,"USB DisConnected ");//<2F><>ʾUSB<53><42><EFBFBD>γ<EFBFBD><CEB3><EFBFBD>
|
|||
|
|
Divece_STA=bDeviceState;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
tct++;
|
|||
|
|
if(tct==200)
|
|||
|
|
{
|
|||
|
|
tct=0;
|
|||
|
|
|
|||
|
|
LED2_Toggle;//<2F><>ʾϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
if(USB_STATUS_REG&0x10)
|
|||
|
|
{
|
|||
|
|
offline_cnt=0;//USB<53><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>offline<6E><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bDeviceState=1;
|
|||
|
|
}
|
|||
|
|
else//û<>еõ<D0B5><C3B5><EFBFBD>ѯ
|
|||
|
|
{
|
|||
|
|
offline_cnt++;
|
|||
|
|
if(offline_cnt>10)bDeviceState=0;//2s<32><73>û<EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>߱<EFBFBD><DFB1><EFBFBD>,<2C><><EFBFBD><EFBFBD>USB<53><42><EFBFBD>γ<EFBFBD><CEB3><EFBFBD>
|
|||
|
|
}
|
|||
|
|
USB_STATUS_REG=0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*************************************************************************/
|
|||
|
|
|
|||
|
|
//USB<53><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Slave) ʵ<><CAB5>
|
|||
|
|
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41>⺯<EFBFBD><E2BAAF><EFBFBD>汾
|
|||
|
|
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*************************************************************************/
|
|||
|
|
|
|||
|
|
|