標(biāo)題:
stm32的USB讀卡器實(shí)驗(yàn)源碼
[打印本頁(yè)]
作者:
遇見(jiàn)之影
時(shí)間:
2017-5-8 23:28
標(biāo)題:
stm32的USB讀卡器實(shí)驗(yàn)源碼
0.png
(57.34 KB, 下載次數(shù): 94)
下載附件
2017-5-8 23:31 上傳
stm32單片機(jī)源程序:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "mmc_sd.h"
#include "ff.h"
#include "flash.h"
#include "exfuns.h"
#include "fattester.h"
#include "mass_mal.h"
#include "usb_lib.h"
#include "hw_config.h"
#include "usb_pwr.h"
#include "memory.h"
#include "usb_bot.h"
//ALIENTEK戰(zhàn)艦STM32開(kāi)發(fā)板實(shí)驗(yàn)50
//USB讀卡器 實(shí)驗(yàn)
//設(shè)置USB 連接/斷線
//enable:0,斷開(kāi)
// 1,允許連接
void usb_port_set(u8 enable)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能PORTA時(shí)鐘
if(enable)_SetCNTR(_GetCNTR()&(~(1<<1)));//退出斷電模式
else
{
_SetCNTR(_GetCNTR()|(1<<1)); // 斷電模式
GPIOA->CRH&=0XFFF00FFF;
GPIOA->CRH|=0X00033000;
PAout(12)=0;
}
}
int main(void)
{
u8 offline_cnt=0;
u8 tct=0;
u8 USB_STA;
u8 Divece_STA;
delay_init(); //延時(shí)函數(shù)初始化
NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
uart_init(9600); //串口初始化為9600
LED_Init(); //LED端口初始化
LCD_Init(); //初始化液晶
KEY_Init(); //按鍵初始化
POINT_COLOR=RED;//設(shè)置字體為藍(lán)色
LCD_ShowString(60,50,200,16,16,"WarShip STM32");
LCD_ShowString(60,70,200,16,16,"USB Card Reader TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"2012/9/25");
SPI_Flash_Init();
if(SD_Initialize())LCD_ShowString(60,130,200,16,16,"SD Card Error!"); //檢測(cè)SD卡錯(cuò)誤
else //SD 卡正常
{
LCD_ShowString(60,130,200,16,16,"SD Card Size: MB");
Mass_Memory_Size[0]=(long long)SD_GetSectorCount()*512;//得到SD卡容量(字節(jié)),當(dāng)SD卡容量超過(guò)4G的時(shí)候,需要用到兩個(gè)u32來(lái)表示
Mass_Block_Size[0] =512;//因?yàn)槲覀冊(cè)贗nit里面設(shè)置了SD卡的操作字節(jié)為512個(gè),所以這里一定是512個(gè)字節(jié).
Mass_Block_Count[0]=Mass_Memory_Size[0]/Mass_Block_Size[0];
LCD_ShowNum(164,130,Mass_Memory_Size[0]>>20,5,16); //顯示SD卡容量
}
if(SPI_FLASH_TYPE!=W25Q64)LCD_ShowString(60,130,200,16,16,"W25Q64 Error!"); //檢測(cè)SD卡錯(cuò)誤
else //SPI FLASH 正常
{
Mass_Memory_Size[1]=1024*1024*6;//前6M字節(jié)
Mass_Block_Size[1] =512;//因?yàn)槲覀冊(cè)贗nit里面設(shè)置了SD卡的操作字節(jié)為512個(gè),所以這里一定是512個(gè)字節(jié).
Mass_Block_Count[1]=Mass_Memory_Size[1]/Mass_Block_Size[1];
LCD_ShowString(60,150,200,16,16,"SPI FLASH Size:6144KB");
}
delay_ms(1800);
usb_port_set(0); //USB先斷開(kāi)
delay_ms(300);
usb_port_set(1); //USB再次連接
LCD_ShowString(60,170,200,16,16,"USB Connecting...");//提示SD卡已經(jīng)準(zhǔn)備了
//USB配置
USB_Interrupts_Config();
Set_USBClock();
USB_Init();
delay_ms(1800);
while(1)
{
delay_ms(1);
if(USB_STA!=USB_STATUS_REG)//狀態(tài)改變了
{
LCD_Fill(60,190,240,190+16,WHITE);//清除顯示
if(USB_STATUS_REG&0x01)//正在寫
{
LCD_ShowString(60,190,200,16,16,"USB Writing...");//提示USB正在寫入數(shù)據(jù)
}
if(USB_STATUS_REG&0x02)//正在讀
{
LCD_ShowString(60,190,200,16,16,"USB Reading...");//提示USB正在讀出數(shù)據(jù)
}
if(USB_STATUS_REG&0x04)LCD_ShowString(60,210,200,16,16,"USB Write Err ");//提示寫入錯(cuò)誤
else LCD_Fill(60,210,240,210+16,WHITE);//清除顯示
if(USB_STATUS_REG&0x08)LCD_ShowString(60,230,200,16,16,"USB Read Err ");//提示讀出錯(cuò)誤
else LCD_Fill(60,230,240,230+16,WHITE);//清除顯示
USB_STA=USB_STATUS_REG;//記錄最后的狀態(tài)
}
if(Divece_STA!=bDeviceState)
{
if(bDeviceState==CONFIGURED)LCD_ShowString(60,170,200,16,16,"USB Connected ");//提示USB連接已經(jīng)建立
else LCD_ShowString(60,170,200,16,16,"USB DisConnected ");//提示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=CONFIGURED;
}else//沒(méi)有得到輪詢
{
offline_cnt++;
if(offline_cnt>10)bDeviceState=UNCONNECTED;//2s內(nèi)沒(méi)收到在線標(biāo)記,代表USB被拔出了
}
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
完整代碼下載:
實(shí)驗(yàn)50 USB讀卡器實(shí)驗(yàn).zip
(1.13 MB, 下載次數(shù): 58)
2017-5-8 23:27 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
發(fā)奮的小白
時(shí)間:
2017-12-4 21:32
謝謝分享
作者:
qwddn
時(shí)間:
2017-12-5 12:48
好資料,謝謝。
作者:
captod
時(shí)間:
2019-9-6 12:33
好資料,謝謝。
作者:
111111111110
時(shí)間:
2019-11-6 22:47
有沒(méi)有設(shè)計(jì)的原理圖,基于STM32的USB讀卡器設(shè)計(jì)方法?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1