STM32入门学习笔记之USB读卡器实验2

发布者:InspiredDreamer最新更新时间:2024-05-10 来源: elecfans关键字:STM32  入门学习 手机看文章 扫描二维码
随时随地手机看文章

(2)usb_prop.c文件修改

原文件

图片

修改后文件

图片

(3)memory.h文件修改

图片

(4)mass_mal.h文件修改

图片

(5)memory.c文件修改

图片

(6)usb_bot.c文件修改

图片


(7)mass_mal.c文件重写


#include 'platform_config.h'


#include 'mass_mal.h'


#include 'sdio_sdcard.h'


#include 'w25q128.h'


long long Mass_Memory_Size[ MAX_LUN+1 ] ;


u32 Mass_Block_Size[ MAX_LUN+1 ] ;


u32 Mass_Block_Count[ MAX_LUN+1 ] ;


uint16_t MAL_Init( uint8_t lun )


{


u16 Status=MAL_OK ;  


   switch( lun )


   {


          case 0:    break;


          case 1:    break;


          default:return MAL_FAIL ;


   }


   return Status ;

}


uint16_t MAL_Write(uint8_t lun, uint64_t Memory_Offset, uint32_t *Writebuff, uint16_t Transfer_Length)


{


u8 STA ;


   switch( lun )


   {


          //磁盘0为 SPI FLASH盘


          case 0:


                 STA = 0 ;


                 W25QXX_Write( ( u8* )Writebuff, Memory_Offset, Transfer_Length ) ;


                 break ;


          //磁盘1为SD卡


          case 1:


                 STA = SD_WriteDisk( ( u8* )Writebuff, Memory_Offset>>9, Transfer_Length>>9 ) ;


                 break ;


          default:


                 return MAL_FAIL ;


   }


   if( STA!=0 )


          return MAL_FAIL ;


   return MAL_OK ;

}


uint16_t MAL_Read( uint8_t lun, uint64_t Memory_Offset, uint32_t *Readbuff, uint16_t Transfer_Length )


{


u8 STA ;


   switch( lun )


   {


          //磁盘0为 SPI FLASH盘


          case 0 :


                 STA = 0 ;

W25QXX_Read( ( u8* )Readbuff, Memory_Offset, Transfer_Length ) ;


break;


          //磁盘1为SD卡


          case 1 :

STA = SD_ReadDisk( ( u8* )Readbuff, Memory_Offset>>9, Transfer_Length>>9 ) ;


break;


          default:return MAL_FAIL ;


   }


   if( STA!=0 )


          return MAL_FAIL ;


   return MAL_OK ;

}


uint16_t MAL_GetStatus( uint8_t lun )


{


switch( lun )


{


          case 0:return MAL_OK;


          case 1:return MAL_OK;


          default:return MAL_FAIL;


}

}


关键字:STM32  入门学习 引用地址:STM32入门学习笔记之USB读卡器实验2

上一篇:基于STM32物联网开发板(2)--语音播报SYN6288
下一篇:STM32入门学习笔记之文件系统FatFs的移植3

推荐阅读最新更新时间:2026-03-20 20:30

STM32 USB SD读卡器(SDIO)
这次是做一个SD卡的USB读卡器的功能,我们就在上次NAND Flash模拟出的U盘的工程上修改了,这样的话只要修改一小部分了。 工程的绝大部分不需要修改,只要将fsmc_nand.c文件移除工程,添加上官方的关于SDIO的SD卡的驱动代码文件stm32_eval_sdio_sd.c,我讨厌出现eval,所以将该文件直接改为sdio_sdcard.c。同时,既然我们使用SDIO来驱动SD卡,所以在外设库文件组里要添加stm32_sdio.c文件,否则会出现很多未定错误。 STM32 USB SD读卡器(SDIO) 我们接下去修改的就只有mass_mal.c这个文件了。更NAND Flash工程一样,我们改成简洁点: uint3
[单片机]
STM32 USB SD卡读卡器和NAND FLASH模拟U盘
本次工程是要同时实现SD卡读卡器和NAND Flash模拟U盘的功能。结合之前的两个工程,稍稍修改下就可以了。 既然要实现两个盘,当然在usb_prop.c中的Max_Lun变量赋值为1,在USB_User组中同时添加fsmc_nand.c和sdio_sdcard.c这两个文件,在外设库中挺尸添加stm32f10x_sdio.c和stm32f10x_fsmc.c两个文件。 添加完之后,可能会有些许的错误,解决完后,我们就要修改下mass_mal.c文件了,这个文件本次要同时实现SD卡和NAND Flash的相关驱动代码的挂接,代码如下: uint32_t Mass_Memory_Size ; uint32_t Mass_Block
[单片机]
<font color='red'>STM32</font> <font color='red'>USB</font> SD卡<font color='red'>读卡器</font>和NAND FLASH模拟U盘
入门单片机stm32要如何更好的学习
stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm32的视频资料便于学习参考。 什么是串口 UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器 USART : Universal Synchronous Asynchronous Receiver/Transmitter 通用同步/异步收发器 一种是常用也是最简单的串行数据传输协议。数据线只需要两根就可以实现全双工。 Tx: 发送数据线 Rx: 接收数据线 A B TX
[单片机]
老司机告诉你,如何系统地入门学习stm32
不要去学STM32。我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对。 你问,如何系统地入门学习stm32? 本身就是一个错误的问题。假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。 你要考虑的是, 我可以用STM32实现什么? 为什么使用STM32而不是8051? 是因为51的频率太低,无法满足计算需求?是51的管脚太少,无法满足众多外设的IO? 是51的功耗太大,电池挺不住?是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 是51的内存太小而你要存储的东西太多? 当你需要使用STM32某些功能,而51实现不了的时候, 那STM32自然不需要学习,你会直接去寻找
[单片机]
STM32入门学习笔记之MPU6050传感器解析实验1
19.1 MPU6050简介 19.1.1 芯片概述 MPU6050是InvenSense公司推出的一款6轴运动处理芯片,内置3轴陀螺仪及3轴速度传感器,内置两组I2C接口,其中一组用于通信,另一组则用于连接外部磁力传感器,采用自带的数字运动处理器DMP(Digital Motion Processor),通过主I2C接口,直接读取完整的9轴融合演算数据。MPU6050检测轴及其检测方向如下图所示。 19.1.2 引脚介绍 MPU6050采用QFN-24封装,端口描述如下表所示。 引脚编号 引脚名称 功能 1 CLKIN 外部参考时钟输入,如果不使用直接接地 2 NC 空引脚 3 NC 空引脚 4 NC 空
[单片机]
<font color='red'>STM32</font><font color='red'>入门</font><font color='red'>学习</font>笔记之MPU6050传感器解析实验1
STM32入门学习笔记之MPU6050传感器解析实验2
(2) 陀螺仪配置寄存器 (地址:0x1B) 7 6 5 4 3 2 1 0 XG_ST YG_ST ZG_ST FS_SEL - - - Bit 7:陀螺仪X轴自检 0:禁用 1:启用 Bit 6:陀螺仪Y轴自检 0:禁用 1:启用 Bit 5:陀螺仪Z轴自检 0:禁用 1:启用 Bit 4~Bit 3:陀螺仪满量程 0:±250°/s 1:±500°/s 2:±1000°/s 3:±2000°/s (3) 加速度传感器配置寄存器 (地址:0x1C) 7 6 5 4 3 2 1 0 XA_ST YA_ST ZA_ST AFS_SEL - - - Bit 7:加速度计X轴自检 0:禁用 1:启用 B
[单片机]
STM32入门学习笔记之MPU6050传感器解析实验4
(2)创建mpu6050.c文件,输入以下代码。 /********************************************************************************************************* MUP6050 驱 动 程 序 *********************************************************************************************************/ #include mpu6050.h #include delay.h /***********
[单片机]
STM32入门学习笔记之uCOS-II系统移植3
⑤这两个函数都用于任务切换,它们的本质都是触发PendSV中断,具体切换过程在PendSV的中断函数中进行,其中OSCtxSw是任务级切换,OSIntCtxSw是中断级切换,是从中断退出时切换到一个任务中,从中断切换到任务的过程中,CPU的寄存器入栈工作已经完成。 OSCtxSw PUSH {R4, R5} LDR R4, =NVIC_INT_CTRL ;触发PendSV异常 LDR R5, =NVIC_PENDSVSET STR R5, ;向NVIC_INT_CTRL写入NVIC_PENDSVSET触发PendSV中断 POP {R4, R5} BX LR OSIntCt
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved