HC32F460 实现模拟U盘导入python脚本在19264点阵屏上绘图--U盘模式
1、将usb U盘模式库文件添加到工程中
2、将usb_dev_msc例程中source目录下的文件复制到本项目source目录下,然后添加到工程中
3、添加相关引用
4、修改文件usb_dev_msc_msd.c
#define FLASH_SECTOR32_ADRR (8*1024*40)
设置内部flash起始地址
根据要使用的flash空间大小设置容量
修改flash读写函数
int8_t msc_getcapacity(uint8_t lun, uint32_t *block_num, uint32_t *block_size)
{
*block_size = 512u;
*block_num = 16u * 1024u * 8u / 512u;
return Ok;
}
int8_t msc_read(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
int8_t res = (int8_t)0;
uint32_t cnt = 0;
USB_STATUS_REG |= (uint8_t)0X02;
//W25QXX_Read(buf, blk_addr * 512u, blk_len * 512u);
for(cnt = 0; cnt < blk_len*512/4;cnt ++)
{
*(uint32_t *)(buf+4*cnt)=*(uint32_t *)(FLASH_SECTOR32_ADRR+blk_addr*512+cnt*4);
//memcpy((uint8_t *)(buf+512*cnt),(uint8_t *)(FLASH_SECTOR32_ADRR+blk_addr*8*1024+cnt*512),512);
}
//memcpy(buf,(uint8_t *)(FLASH_SECTOR32_ADRR+blk_addr*8*1024),blk_len*8*1024);
return res;
return res;
}
/**
*******************************************************************************
** \brief Write data to storage devices
** \param lun: logic number
** \param buf: data buffer be written
** \param blk_addr: sector address
** \param blk_len: sector count
** \retval status
******************************************************************************/
uint8_t buf_sector[8*1024];
void efm_blok_program(uint32_t addr,uint8_t *buf)
{
uint32_t cnt;
uint32_t sector_start_addr = (addr/(8*1024))*8*1024;
memcpy(buf_sector,(uint8_t *)sector_start_addr,8*1024);
memcpy((uint8_t *)(buf_sector+(addr%(8*1024))),buf,512);
EFM_SectorErase(sector_start_addr);
for(cnt = 0;cnt<8*1024/4;cnt ++)
{
EFM_SingleProgram((uint32_t)(sector_start_addr+cnt*4),*(uint32_t *)(buf_sector+cnt*4));
}
}
int8_t msc_write(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
int8_t res = (int8_t)0;
uint32_t u32Addr;
uint32_t cnt;
USB_STATUS_REG |= (uint8_t)0X01;
//W25QXX_Write(buf, blk_addr * 512u, blk_len * 512u);
/* Unlock EFM. */
EFM_Unlock();
/* Enable flash. */
EFM_FlashCmd(Enable);
/* Wait flash ready. */
while(Set != EFM_GetFlagStatus(EFM_FLAG_RDY))
{
;
}
for(cnt=0;cnt <blk_len;cnt ++)
{
efm_blok_program(FLASH_SECTOR32_ADRR+(blk_addr+cnt)*512,(uint8_t *)(buf+cnt*512));
}
/* Lock EFM. */
EFM_Lock();
return res;
}
5、设置控制台启动U盘模式
#include "usb_dev_user.h"
#include "usb_dev_desc.h"
#include "usb_bsp.h"
#include "usb_dev_msc_class.h"
usb_core_instance usb_dev;
static rt_thread_t upan = RT_NULL;
static void usb_upan_entry(void *parameter)
{
hd_usb_dev_init(&usb_dev, &user_desc, &usb_dev_msc_cbk, &user_cb);
while(1){
rt_thread_mdelay(1);
}
}
void usb_thread_run(void)
{
upan = rt_thread_create("usbpan",usb_upan_entry, RT_NULL,1024,3, 10);
if (upan != RT_NULL)
rt_thread_startup(upan);
}
static int upan_mode(int argc, char *argv[]){
usb_thread_run();
return 0;
}
MSH_CMD_EXPORT_ALIAS(upan_mode, upan_mode, run upan_mode);
6、在 配置文件中 rtconfig.h 打开宏定义 #define RT_USING_HEAP
修改宏定义#define RT_HEAP_SIZE 4096 增大堆空间
7、插上usb线,编译运行,电脑上会识别出U盘,格式化后即可以复制粘贴文件
HC32F460 实现模拟U盘导入python脚本在19264点阵屏上绘图--U盘模式相关推荐
- HC32F460 实现模拟U盘导入python脚本在19264点阵屏上绘图--RTthread移植
一.项目简介 该项目涉及到的知识包括: 1.华大M4内核单片机HC32F460的使用 2.国产嵌入式系统RTThread的应用 3.超轻量级且超容易移植的嵌入式python脚本解释器pikascrip ...
- python访问文件下载地址_用Python脚本去获得skydrive上文件的真实地址链接 + 提供脚本下载v2012-01-18...
之前得知微软提供的免费在线云存储空间Skydrive提供的空间大小达25GB的时候,就像其他人一样想到了可以用来存储音视频和图片,作为文件存储器,以便和别人分享文件.但是后来发现,skydrive中上 ...
- u盘耗电测试软件,如何在电脑上查看U盘的使用电量
一般我们在使用U盘时都不会考虑到它的耗电量问题,但其实U盘插入到计算机的USB端口中后,主板需要对该端口进行持续供电,它才能正常工作!一旦你的计算机中同时插入几个USB接口的设备时,主板就可能无法为每 ...
- 使用Python脚本下载yandex云盘链接中的内容
前言 在下载yandex disk云盘中其他人分享的一些内容时,正常情况下点击下载按钮即可.但是很多时候需要在没有图形界面的Linux机器上下载或者批量下载一批链接,这个时候需要使用脚本方式下载. 方 ...
- C语言调用Python脚本
目录 一.头文件 二.使用步骤 1.初始化python模块 2.设置python的搜索路径 3.导入python脚本 4.导入调用的方法 5.构建参数 6.调用方法 7.解析返回值 8.释放资源 三. ...
- python flask 表单数据输出_将数据从HTML表单发送到Flask中的Python脚本
我的Python脚本中有下面的代码: def cmd_wui(argv, path_to_tx): """Run a web UI.""" ...
- python脚本控制手机app_Python+Appium学习之启动手机APP或者浏览器
一.启动浏览器: pycharm中python脚本如下: 1 from appium importwebdriver2 3 desired_caps ={4 'platformName':'Andro ...
- python打包脚本_py2exe打包python脚本
在工作中遇到将python脚本转换成exe可执行程序的需求,通过查询可以使用py2exe来构建满足要求的程序,这里简要说明一下使用步骤. 一.py2exe是一个将python脚本转换成windows上 ...
- 在Spark Scala/Java应用中调用Python脚本,会么?
摘要:本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同. 本文分享自华为云社区<[Spark]如何在Spark Scala/ ...
最新文章
- 《Python和Pygame游戏开发指南》——1.12 图书中的文本折行
- java实验1_Java程序实验1
- DataFrame纵向合并
- android王者调不了界面,王者荣耀登录界面怎么改?登录界面更改教程[多图]
- Leetcode PHP题解--D47 868. Binary Gap
- Python map 函数 -Python零基础入门教程
- Ubuntu14.04 下截图工具与设置快捷键
- shell - 查看天气
- 美国计算机科学奥林匹克竞赛试题,中学信息奥林匹克竞赛试题精选.doc
- Springboot自定义注解实现用户登录状态校验(一)
- oracle如何读取到从n行到m行的数据_关系型数据库进阶之查询优化
- 每日算法系列【LeetCode 470】用 Rand7() 实现 Rand10()
- 数据包在 Istio 网格中的生命周期
- 软件设计师-知识产权和标准化知识
- 如何使用 JavaScript 和 Canvas 创建星形图案
- mysql入门篇1———单表操作
- DOORS入门教程系列:基本概念介绍(一)
- buildroot制作树莓派CM3的系统
- java wtc_WTC的配置(二)
- 如何获得的office 365 年卡