【极海APM32F407 Tiny Board】U盘操作
[复制链接]
APM32F407包含两个USB接口,支持USB低速、全速、高速模式,并且内置了高速PHY。相比STM32外置PHY的做法极大简化了外围电路设计。
本次评估板引出的USB主端口为OTG-HS,分配在PB14,PB15两只脚。如下图所示:
官方提供的HOST/MSC例程给出了操作U盘的基本演示。
需要添加到工程的USB文件如下:
USB的处理大概可分为以下几点:
1、中断处理
void OTG_HS1_IRQHandler(void)
{
USBH_OTG_IsrHandler(&usbHostHandler);
}
2、任务创建
由于U盘操作是一个含有阻塞状态的任务,使用RTOS能够避免出现其它任务无法响应的状况。为达到该效果,USB处理需要设为较低优先级任务。本测试将其设置为系统最低优先级,堆栈为2KB。
osThreadDef(thd_usb, usb_task, osPriorityLow, 1, 0x800);
obj_init_order5(usb_task_creat);
void usb_task_creat(void)
{
os_obj.tid_usb_task = osThreadCreate(osThread(thd_usb), NULL);
}
3、USB状态扫描
该步骤主要用来检测USB设备是否就绪
while (1)
{
USB_HostProcess();
USB_HostUserApplication();
osDelay(1);
}
4、USB应用处理
设备就绪后,进入应用处理状态:
按板载两个按键分别执行U盘文件浏览和U盘读写操作。
具体操作代码较多,此处不做详述,有兴趣的小伙伴可以下载帖尾代码进行测试。
读写操作创建两个文件:
APM32USB.PDF
Host_MSC_Test.txt
如下图所示:
APM32USB.PDF文件内容截取部分,如下所示:
测试代码托管在gitee平台:
|