📄 main.c
字号:
//======================================================================
// 工程名称: USB
// 功能描述: 以USB数据传输方式在PC端访问板上SD卡
// IDE环境: SUNPLUS S+core IDE 2.2.0(or later)
// 涉及的库: USBD_Common_V0.1.a, USBD_MSDC_SDCard_V0.1.a, USBD_MSDC_V0.1.a
// 组成文件: main.c, Sys_IRQ.c, User_IRQ.c, SDCardDriver.c
// USBD_Descriptor.c, USBD_SCSI_Read_Write.c,
// 硬件连接: 实验板的USB接口与PC相连,SD卡座中插入SD卡
// 维护记录: 2007-01-16 v1.0
//======================================================================
//=============================================================
// 文件名称: main.c
// 功能描述: 以USB数据传输方式在PC端访问板上SD卡
// 维护记录: 2007-01-16 v1.0
//=============================================================
#include "SPCE3200_Register.h"
#include "SPCE3200_Constant.h"
#include ".\SDCard\SDCardDriver.h"
#include ".\USB_Device\USB_Device.h"
int main(void);
void InitSPCE3200(void);
void USBD_Check_Disk(void);
//======================================//
// 语法格式: void InitSPCE3200(void)
// 实现功能: 初始化SPCE3200内部模块
// 参数: 无
// 返回值: 无
//======================================//
void InitSPCE3200(void)
{
*P_INT_MASK_CTRL1 = ~0x00040080; // 开启USB中断和Timer中断
*P_CLK_PLLAU_CONF |= C_PLLU_CLK_EN; // 使能USB PLL
*P_USB_CLK_CONF = 0x00000005; // 使能USB Device
*P_CLK_32K_CONF = C_32K_CRY_EN; // 开启32768Hz时钟
*P_SD_CLK_CONF = C_SD_CLK_EN|C_SD_RST_DIS; // 使能SD控制器时钟
*P_SD_INTERFACE_SEL = C_SD_PORT_SEL; // 使能SD端口
*P_TIMER0_CLK_CONF = C_TIMER_CLK_EN|C_TIMER_RST_DIS; // 使能Timer0时钟
*P_TIMER_CLK_SEL = C_TIMER0_CLK_32K; // 计数频率32768Hz
*P_TIMER0_PRELOAD_DATA = 65536-32768/10; // 10Hz定时
*P_TIMER0_MODE_CTRL = C_TIMER_CTRL_EN|C_TIMER_INT_EN|C_TIMER_INT_FLAG;
// 开启Timer0并采用中断模式
}
//=============================================================
// 语法格式: int main(void);
// 实现功能: C程序代码的主函数,提供程序代码的入口点,其内部实现了
// 实时USB设备服务程序
// 参数: 无
// 返回值: 无
//=============================================================
int main(void)
{
InitSPCE3200(); // 初始化硬件端口
gSDCardInsert=1; // 初始化变量
gSDCardPresent=0;
gSDCardWriteProtect=0;
SDCardTotalSector=0;
R_USBD_UnPlug = 1;
R_USBD_Disk0 = gSDCardPresent;
R_USBD_Disk0_Size = SDCardTotalSector;
R_USBD_Disk0_Media_Change = 0x00;
R_USBD_Disk0_WP = 0x00;
while(1)
{
if(R_USBD_UnPlug == 0)
{
USBDevice_ServiceLoop(); // 调用USB driver API
}
}
return 0;
}
//======================================//
// 语法格式: void USBD_Check_Disk(void)
// 实现功能: 实现了USB Storage Disk侦测,并初始化磁盘的功能
// 参数: 无
// 返回值: 无
//======================================//
void USBD_Check_Disk(void)
{
int ret;
if(gSDCardInsert && (gSDCardPresent == 0))
{
ret=SDDrv_Initial();
if(ret == 0x00)
R_USBD_Disk0_Media_Change = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -