STM32把SD卡内极速快三平台出租搬运到内部FLASH

STM32操极速快三平台出租haozbbs.comQ1446595067 作访问flash,包括写入数据到flash和从flash读取数据 :https://blog.csdn.net/Ace_Shiyuan/article/details/78196648

这篇文章写得比较明白,但是它写的函数不饱满,没有把Flash充分写满。
请看写数组的函数:FLASHStatus = FLASH_ProgramHalfWord(STARTADDR+WriteAddress+i*2, temp);//写入数据
问题大了,比如写u8 pBuffer[10]={"123456789"};写进去是:01 00 02 00.... 这样的 中间浪费了,/因为u8转u16会自动给前面补0 那就是01 02 03 在写到内存会字节序反过来。
而如果FLASHStatus = FLASH_ProgramHalfWord(STARTADDR+WriteAddress+i, temp);会失败
因为写之前要擦除的,你写了必须后面移动。你写的是00 01 一次写了2个字节。
有两种解决办法,一种实诚,一种高级。

1基于内部FLASH的库函数,自己写扩展函数。

* @param Address: specifies the address to be programmed.
* This parameter can be 0x1FFFF804 or 0x1FFFF806. -----------------测试下 这两个地址也是不能写的!
FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data)----------这个函数放弃使用。至少是写u16的!写u8会失败!
FLASH_Status FLASH_ProgramHalfWord (uint32_t Address, uint16_t Data)--OK
FLASH_Status FLASH_ProgramWord (uint32_t Address, uint32_t Data)--OK

2测试

#define STM32ADDR_ADJUSTMENT  0X08078800  //p241//0X0807F800 //PAGE255  2K
#define STM32ADDR_PAGE        15
u8 pBuffer[10]={"123456789"};
u8 TBuffer[9];
函数:
stm32_flash_page_clear(STM32ADDR_ADJUSTMENT);
stm32_flash_write_Array(pBuffer,STM32ADDR_ADJUSTMENT,9);
stm32_flash_read_Array(TBuffer,STM32ADDR_ADJUSTMENT,9) ;

3擦掉Flash

for(i=0;i<STM32ADDR_PAGE;i++)
{
stm32_flash_read_Array((u8*)buf,STM32ADDR_ADJUSTMENT,1024*2);
for(j=0;j<512;j++)
{
    if(buf[j]!=0XFFFFFFFF)break;
}
if(j!=512)
    stm32_flash_page_clear(STM32ADDR_ADJUSTMENT+i*1024*2);
}

4开始写

while(res==FR_OK)//死循环执行
{
//  res=f_read(fftemp,tempbuf,4096,(UINT *)&bread); //读取数据
//  if(res!=FR_OK)break;    //执行错误
//  W25QXX_Write(tempbuf,offx+flashaddr,4096);  //从0开始写入4096个数据
//    offx+=bread;
//  fupd_prog(x,y,size,fftemp->fsize,offx); //进度显示
//  if(bread!=4096)break;   //读完了.
        res=f_read(fftemp,tempbuf,1024*2,(UINT *)&bread);   //读取数据
        stm32_flash_write_Array(tempbuf,i*2018+STM32ADDR_ADJUSTMENT,2048);
         offx+=bread;
         i++;
fupd_prog(x,y,size,15,i);   //进度显示
}
f_close(fftemp);

注意:f_read(fftemp(文件),tempbuf(数组名),10242(数组长),(UINT )&bread(这个变量好,可以告诉你读到多少个,比如你去读2018结果它是23那就是告诉你读完了你只读到了23个));

++++++++++++++我擦++++++++++
unsigned char UpdateBuffer[256];
dWrd = (uint32_t )&UpdateBuffer[idx];
+++++++++++++++++++++++

原文地址:http://blog.51cto.com/13864084/2140236

时间: 2024-10-08 04:46:39

STM32把SD卡内极速快三平台出租搬运到内部FLASH的相关文章

使用saltstack部署极速快三平台搭建

极速快三平台搭建搭建环境: 1.服务器列表: 企 娥:217 1793 408salt-master: 192.168.42.131 salt-minion: 192.168.42.128(minion-192.168.42.128) 192.168.42.130(minion-192.168.42.130) 2.环境: (1)服务器之间互相可以通信(火墙关闭或者火墙允许通信) (2)master对minion的主机名和ip做好解析 部署步骤 1.确定整个配置的目录文件结构: pcre软件安装

Yolo系列学习1-Yolov3训练福彩快三平台出租自己的数据

目的:福彩快三平台出租haozbbs.comQ1446595067 实现利用yolov3训练自己的数据集(voc格式) 方法: 1)构建VOC数据集 将你手中的数据集的标注txt修改成voc格式的txt,voc格式如下: 000002.jpg car 44 28 132 121 000003.jpg car 54 19 243 178 000004.jpg car 168 6 298 164 其中第一列为图片名,第二列为目标类别,最后是目标的包围框坐标(左上角和右下角坐标). 批量修改文件名py

一篇文章总结幸运快三平台出租了JVM类加载机制

1.加载幸运快三平台出租haozbbs.comQ1446595067 把二进制表示的Class文件读进JVM中2.连接 验证(验证字节码的有效性) 准备(初始化静态变量的值) 解析(把符号引用转直接引用) 3.初始化为静态变量赋值二.什么时候需要开始加载类? 1.主动引用时需要加载类 使用new 关键字实例化对象 读取或设置一个类的静态字段(被final修饰.已在编译期把结果放入常量池的静态字段除外) 调用一个类的静态方法 2.被动引用时不需要加载类 在子类中引用父类的静态属性,不会触发子类的加

你是程序员,帮我修个电脑吧?吉林快三平台出租

试问有哪个程序员没被要求过帮忙修修电脑.帮忙看看网络怎么了?吉林快三平台出租Q 1152880099  vx: wowotou552  罔 www.1152880099.com/ 如果不是非常亲密的人,那能提出这种要求的人怕是情商智商都有点毛病. 情商上来说,修电脑这种需要高专业度且花个钱就能解决的事情,不适合随便拜托别人;智商上来说--朋友,你见过程序员找工作面试的时候,HR考他怎么修电脑的吗? 生活里这类例子多了去了. 遇到健身教练就想让人帮你3天瘦10斤,还得不打针.不吃药.不节食.不运动

直播答题助手江苏快三平台出租

"世界杯要搞答题直播江苏快三平台出租Q 1152880099  vx: wowotou552  罔 www.1152880099.com/,搜狐准备了百万奖金." 这是近日搜狐董事局主席兼CEO张朝阳在接受媒体采访时,对外界透露的信息. 从今年年初开始,直播答题一路火爆不减. 然而,在众多平台蜂拥进入直播答题领域时,一些问题也逐渐暴露出来,其中,最受关注的莫过于各种辅助类作弊软件的出现. 就在答题者对"答题助手"还处于爱恨交加之际,一则新闻引爆舆论--"百

何快速的提高快三平台出租嵌入式的水平呢?

随着计算快三平台出租haozbbs.comQ1446595067机行业的发展.智能产品的增多.嵌入式技术也日渐变得流行.但是目前国内从事嵌入式这方面的人才比较稀缺.俗话说物以稀为贵,职位也一样.嵌入式人才稀缺,身价自然就变高了,越有经验价格就越高,看到有这样的机会很多人也就按耐不住了.对于一些非专业的人士来说,怎么样学习嵌入式就成了他们头疼的问题.下面就有小编为大家介绍一下如何快速有效的学习嵌入式. 如何快速的提高嵌入式的水平呢? 1.多动手练习 我国的大学很少让学生有实践能力,尤其是在大量扩招

分布式之抉择分布式锁快三平台出租

为什么写这篇文章?目前网上大部分的基于zookeeper快三平台出租请QQ2952777280[话仙源码论坛]http://hxforum.com [木瓜源码论坛]http://papayabbs.com ,和redis的分布式锁的文章都不够全面.要么就是特意避开集群的情况,要么就是考虑不全,读者看着还是一脸迷茫.坦白说,这种老题材,很难写出新创意,博主内心战战兢兢,如履薄冰,文中有什么不严谨之处,欢迎批评.博主的这篇文章,不上代码,只讲分析.(1)在redis方面,有开源redisson的ja

ArrayList.add() 方法吉林快-三平台出租源码解析

吉林快-三平台出租Q1446595067解析源码的方法>>> list.add("hello"); 该方法涉及到的方法被我复制到了一个类中,至于解释,全在注释上.初次解析,别喷我!!! 如有不足望评论,随时补充. package com.nc.sourceCode; import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Arrays;import java.util.Lis

STM32之SD卡

一.SD卡概述 1.定义 SD卡(安全数码卡),是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机.个人数码助理(外语缩写PDA)和多媒体播放器等. 2.容量等级 容量等级 容量范围 磁盘格式 SD 上限至2GB FAT 12, 16 SDHC 2GB至 32GB FAT 32 SDXC 32GB至2TB exFAT 3.SD卡结构 (摘自SanDisk Secure Digital Card Product Manual Version 1.9) ① SD卡