USB_Device ,USB_OTG
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "norflash.h"
- #include "usbd_msc_core.h"
- #include "usbd_usr.h"
- #include "usbd_desc.h"
- #include "usb_conf.h"
- USB_OTG_CORE_HANDLE USB_OTG_dev;
- extern vu8 USB_STATUS_REG; //USB状态
- extern vu8 bDeviceState; //USB连接 情况
- int main(void)
- {
- u8 offline_cnt = 0;
- u8 tct = 0;
- u8 USB_STA;
- u8 Divece_STA;
- HAL_Init(); //初始化HAL库
- Stm32_Clock_Init(96, 4, 2, 4); //设置时钟,96Mhz
- delay_init(96); //初始化延时函数
- uart_init(115200); //初始化USART
- LED_Init(); //初始化LED时钟
- Norflash_Init(); //SPI FLASH 初始化
- printf("NANO STM32\r\n");
- printf("USB Card Reader TEST\r\n");
- NORFLASH_TYPE = Norflash_ReadID();//读取FLASH ID
-
- while ((NORFLASH_TYPE==0) && (NORFLASH_TYPE==0XFFFF)) //检测不到FLASH芯片
- {
- printf("Flash Check Failed!\r\n");
- delay_ms(500);
- printf("Please Check!\r\n");
- delay_ms(500);
- LED0 = !LED0; //DS0闪烁
- }
- printf("SPI FLASH Size:2048KB\r\n");
-
- printf("USB Connecting...\r\n");//提示USB连接中
- USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_MSC_cb, &USR_cb);
- delay_ms(1800);
- while (1)
- {
- delay_ms(1);
- if (USB_STA != USB_STATUS_REG) //状态改变了
- {
- if (USB_STATUS_REG & 0x01) //正在写
- {
- printf("USB Writing...\r\n");//提示USB正在写入数据
- }
- if (USB_STATUS_REG & 0x02) //正在读
- {
- printf("USB Reading...\r\n");//提示USB正在读出数据
- }
- if (USB_STATUS_REG & 0x04)printf("USB Write Err\r\n"); //提示写入错误
- if (USB_STATUS_REG & 0x08)printf("USB Read Err\r\n"); //提示读出错误
- USB_STA = USB_STATUS_REG; //记录最后的状态
- }
- if (Divece_STA != bDeviceState)
- {
- if (bDeviceState == 1) printf("USB Connected\r\n"); //提示USB连接已经建立
- else printf("USB DisConnected\r\n");//提示USB被拔出了
- Divece_STA = bDeviceState;
- }
- tct++;
- if (tct == 200)
- {
- tct = 0;
- LED0 = !LED0; //提示系统在运行
- if (USB_STATUS_REG & 0x10)
- {
- offline_cnt = 0; //USB连接了,则清除offline计数器
- bDeviceState = 1;
- }
- else //没有得到轮询
- {
- offline_cnt++;
- if (offline_cnt > 10)bDeviceState = 0; //2s内没收到在线标记,代表USB被拔出了
- }
- USB_STATUS_REG = 0;
- }
- }
- }
复制代码
原理图: 无
仿真: 无
代码:
STM32F411 HAL库函数版本 USB读卡器实验.7z
(883.83 KB, 下载次数: 4)
|