下面是原子哥的实验代码,我想请问下“u8 USH_User_App(void)”这个函数会在什么时候调用呢?谢谢大神们给我解答!
//用户测试主程序
//返回值:0,正常
// 1,有问题
u8 USH_User_App(void)
{
u32 total,free;
u8 res=0;
Show_Str(30,140,200,16,"设备连接成功!.",16,0);
f_mount(fs[2],"2:",1); //重新挂载U盘
res=exf_getfree("2:",&total,&free);
if(res==0)
{
POINT_COLOR=BLUE;//设置字体为蓝 {MOD}
LCD_ShowString(30,160,200,16,16,"FATFS OK!");
LCD_ShowString(30,180,200,16,16,"U Disk Total Size: MB");
LCD_ShowString(30,200,200,16,16,"U Disk Free Size: MB");
LCD_ShowNum(174,180,total>>10,5,16);//显示U盘总容量 MB
LCD_ShowNum(174,200,free>>10,5,16);
}
while(HCD_IsDeviceConnected(&USB_OTG_Core))//设备连接成功
{
LED1=!LED1;
delay_ms(200);
}
LED1=1;//关闭LED1
f_mount(0,"2:",1); //卸载U盘
POINT_COLOR=RED;//设置字体为红 {MOD}
Show_Str(30,140,200,16,"设备连接中...",16,0);
LCD_Fill(30,160,239,220,WHITE);
return res;
}
int main(void)
{
u8 t;
Stm32_Clock_Init(336,8,2,7);//设置时钟
delay_init(168); //初始化延时
uart_init(84,115200); //115200波特率
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //按键
LCD_Init(); //初始化LCD
W25QXX_Init(); //SPI FLASH初始化
usmart_dev.init(84); //初始化USMART
my_mem_init(SRAMIN); //初始化内部内存池
exfuns_init(); //为fatfs相关变量申请内存
piclib_init(); //初始化画图
f_mount(fs[0],"0:",1); //挂载SD卡
f_mount(fs[1],"1:",1); //挂载外部SPI FLASH盘
POINT_COLOR=RED;
while(font_init()) //检查字库
{
LCD_ShowString(60,50,200,16,16,"Font Error!");
delay_ms(200);
LCD_Fill(60,50,240,66,WHITE);//清除显示
delay_ms(200);
}
Show_Str(30,50,200,16,"探索者STM32F407开发板",16,0);
Show_Str(30,70,200,16,"USB U盘实验",16,0);
Show_Str(30,90,200,16,"2014年7月22日",16,0);
Show_Str(30,110,200,16,"正点原子@ALIENTEK",16,0);
Show_Str(30,140,200,16,"设备连接中...",16,0);
//初始化USB主机
USBH_Init(&USB_OTG_Core,USB_OTG_FS_CORE_ID,&USB_Host,&USBH_MSC_cb,&USR_Callbacks);
while(1)
{
USBH_Process(&USB_OTG_Core, &USB_Host);
delay_ms(1);
t++;
if(t==200)
{
LED0=!LED0;
t=0;
}
}
}
我在做一个采集数据,将数据放入到USB文件里的工程。
但同样是这段程序,USB插进去后,就进入了USH_User_App()里的一个循环出不来了。我在main()里写的服务程序就再也启动不起来了。
我想问下:
1、这个USH_User_App是怎样一个流程调用起来的,我只找到main()的while(1)中有个USBH_Process(&USB_OTG_Core, &USB_Host);最先被调用,其后就不知道怎么回到的USH_User_App函数。
2、因为没有找到USH_User_App是如何被调用的,所以不敢对其中的内容进行修改。请问,可否将其内容移到main的while(1)中,需要注意哪些,尤其是USB掉了以后,再重新回到检测状态需要调用哪个函数?
不胜感激
一周热门 更多>