標(biāo)題:
STM32F411 USB讀寫(xiě)測(cè)試程序
[打印本頁(yè)]
作者:
sr861126
時(shí)間:
2024-3-22 13:47
標(biāo)題:
STM32F411 USB讀寫(xiě)測(cè)試程序
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狀態(tài)
extern vu8 bDeviceState; //USB連接 情況
int main(void)
{
u8 offline_cnt = 0;
u8 tct = 0;
u8 USB_STA;
u8 Divece_STA;
HAL_Init(); //初始化HAL庫(kù)
Stm32_Clock_Init(96, 4, 2, 4); //設(shè)置時(shí)鐘,96Mhz
delay_init(96); //初始化延時(shí)函數(shù)
uart_init(115200); //初始化USART
LED_Init(); //初始化LED時(shí)鐘
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)) //檢測(cè)不到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) //狀態(tài)改變了
{
if (USB_STATUS_REG & 0x01) //正在寫(xiě)
{
printf("USB Writing...\r\n");//提示USB正在寫(xiě)入數(shù)據(jù)
}
if (USB_STATUS_REG & 0x02) //正在讀
{
printf("USB Reading...\r\n");//提示USB正在讀出數(shù)據(jù)
}
if (USB_STATUS_REG & 0x04)printf("USB Write Err\r\n"); //提示寫(xiě)入錯(cuò)誤
if (USB_STATUS_REG & 0x08)printf("USB Read Err\r\n"); //提示讀出錯(cuò)誤
USB_STA = USB_STATUS_REG; //記錄最后的狀態(tài)
}
if (Divece_STA != bDeviceState)
{
if (bDeviceState == 1) printf("USB Connected\r\n"); //提示USB連接已經(jīng)建立
else printf("USB DisConnected\r\n");//提示USB被拔出了
Divece_STA = bDeviceState;
}
tct++;
if (tct == 200)
{
tct = 0;
LED0 = !LED0; //提示系統(tǒng)在運(yùn)行
if (USB_STATUS_REG & 0x10)
{
offline_cnt = 0; //USB連接了,則清除offline計(jì)數(shù)器
bDeviceState = 1;
}
else //沒(méi)有得到輪詢
{
offline_cnt++;
if (offline_cnt > 10)bDeviceState = 0; //2s內(nèi)沒(méi)收到在線標(biāo)記,代表USB被拔出了
}
USB_STATUS_REG = 0;
}
}
}
復(fù)制代碼
原理圖: 無(wú)
仿真: 無(wú)
代碼:
STM32F411 HAL庫(kù)函數(shù)版本 USB讀卡器實(shí)驗(yàn).7z
(883.83 KB, 下載次數(shù): 7)
2024-3-24 03:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1