【iCore4 双核心板_ARM】例程十九:USBD_MSC实验——虚拟U盘
实验步骤:
1、将SD卡插在SD卡槽中。
2、将跳线冒跳至USB_OTG,将USB_OTG通过Micor USB线与USB主机(电脑)相连。
3、烧写程序,我的电脑中将出现一个磁盘。
实验现象:
核心代码:
int main(void)
{ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */
SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */
while ()
{
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
LED_RED_ON;
LED_GREEN_OFF;
LED_BLUE_OFF;
HAL_Delay();
LED_RED_OFF;
LED_GREEN_ON;
LED_BLUE_OFF;
HAL_Delay();
LED_RED_OFF;
LED_GREEN_OFF;
LED_BLUE_ON;
HAL_Delay();
}
/* USER CODE END 3 */ }
/*******************************************************************************
* Function Name : STORAGE_Read_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_Read_HS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len)
{
/* USER CODE BEGIN 13 */
uint32_t timeout = ; if(BSP_SD_ReadBlocks((uint32_t*)buf, blk_addr, blk_len, timeout) == USBD_OK){
while(BSP_SD_GetCardState()!= MSD_OK)
{
if (timeout-- == )
{
return -;
}
}
}
return (USBD_OK);
/* USER CODE END 13 */
} /*******************************************************************************
* Function Name : STORAGE_Write_HS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_Write_HS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len)
{
/* USER CODE BEGIN 14 */
uint32_t timeout = ; if(BSP_SD_WriteBlocks((uint32_t*)buf, blk_addr, blk_len, timeout) == USBD_OK){
while(BSP_SD_GetCardState()!= MSD_OK)
{
if (timeout-- == )
{
return -;
}
}
}
return (USBD_OK);
/* USER CODE END 14 */
}
源代码下载链接:
链接:http://pan.baidu.com/s/1dFvm5rj 密码:tys0
iCore4链接:
【iCore4 双核心板_ARM】例程十九:USBD_MSC实验——虚拟U盘的更多相关文章
- 【iCore3 双核心板】例程十九:USBD_MSC实验——虚拟U盘
实验指导书及代码包下载: http://pan.baidu.com/s/1i4eNbQd iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore4 双核心板_ARM】例程二十九:SD_IAP_FPGA实验——更新升级FPGA
实验现象及操作说明: 1.烧写程序成功,绿色ARM·LED灯点亮,三色FPGA·LED灯循环点亮,烧写失败,如果挂载SD卡失败,红灯快闪,如果打开文件失败,蓝灯快闪,读取文件指针移动失败,白灯点亮,升 ...
- 【iCore4 双核心板_ARM】例程三十四:U_DISK_IAP_ARM实验——更新升级STM32
实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. 3.按下按键上电或写程序将进行升 ...
- 【iCore4 双核心板_ARM】例程三十二:UART_IAP_ARM实验——更新升级STM32
实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...
- 【iCore4 双核心板_ARM】例程十五:USB_CDC实验——高速数据传输
实验方法: 1.安装USB CDC驱动,驱动安装方法参考例程包中安装方法文档. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore4 USB-OTG接口与电脑相连. 3.打开上位机 ...
- 【iCore4 双核心板_ARM】例程十六:USB_HID实验——双向数据传输
实验方法: 1.USB_HID协议免驱动,此例程不需要驱. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore4 USB-OTG接口与电脑相连. 3.打开上位机软件usb_hid. ...
- 【iCore4 双核心板_ARM】例程三十八:DSP MATH库测试
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ int i,j; int res; ]; ; /* USER CODE END 1 */ /* ...
- 【iCore4 双核心板_ARM】例程三十六:DAC实验——输出直流电压
实验现象: 用电压表测量PA4引脚有2.0V直流电压输出. 核心代码: int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ / ...
- 【iCore4 双核心板_ARM】例程三十五:HTTP_IAP_ARM实验——更新升级STM32
实验现象: 核心代码: int main(void) { led.initialize(); //LED³õʼ»¯ key.initialize(); if(ARM_KEY_STATE == KEY ...
随机推荐
- Mysql学习(一)添加一个新的用户并用golang操作Mysql
Mysql添加一个新的用户并赋予权限 添加一个自己的用户到mysql 首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码 ailumiyana@ailumiyana:~/ ...
- Python开发之日志记录模块:logging
1 引言 最近在开发一个应用软件,为方便调试和后期维护,在代码中添加了日志,用的是Python内置的logging模块,看了许多博主的博文,颇有所得.不得不说,有许多博主大牛总结得确实很好.似乎我再写 ...
- 利用FutureTask进行超时设置方法
public class Test { public static void main(String[] args) { ExecutorService executor = Executors. ...
- Django models字段查询谓词表
谓词 含义 示例 等价SQL语句 exact 精确等于 Comment.objects.filter(id__exact=14) select * from Comment where id=14 i ...
- web开发 入门
插件 ,索引文件,js目录,视图目录,资产目录,css目录,数据目录,font-awesome-4.7.0目录,图像目录. 引导程序 框架.字体.layer,mockjs.paging分页.树网格.t ...
- BZOJ.3064.CPU监控(线段树 历史最值)
题目链接 \(Description\) 有一个长为n的序列Ai,要求支持查询[l,r]的最值.历史最值,区间加/重设 \(Solution\) 线段树,每个点再维护一个历史(从0到现在)最大值.历史 ...
- mongoDB进行分组操作
一.$group 进行分组 1.每个职位的雇员人数: db.getCollection('emp').aggregate( [ {'$group':{ ‘_id’:'$job', job_count: ...
- JNI编程实现(Windows)
上一篇介绍了Linux平台的JNI编程方法,Windows平台的JNI本地调用基本类似,区别就是制作的动态库不同,Linux平台是*.so,Windows平台是*.dll.其中,Windows平台的函 ...
- 增益 Gain 分贝 dB
https://zh.wikipedia.org/wiki/%E5%88%86%E8%B2%9D 分贝(decibel)是量度两个相同单位之数量比例的单位,主要用于度量声音强度,常用dB表示. “分” ...
- 版本视图找不到数据 EDITIONING VIEW
Oracle database 12 以后的版本,特别在EBS R12.2.X加入了版本视图这种技术,跟MOAC有点像. CREATE OR REPLACE FORCE EDITIONING VIEW ...