C语言数据如何高速存储处和读取,求算法,(NOR FLASH)

Python017

C语言数据如何高速存储处和读取,求算法,(NOR FLASH),第1张

这个问题太宽泛了,一般牵涉到具体硬件的问题多半需要系统的考虑。

简单的来说,flash的写入是分块的。这种情况下如果单独的改写其中的一部分需要经过读取、擦除、写入的过程,也许你可以从这方面下手。

900K就是地址呗,HELLO就是数组呗,

extern BOOLEAN EtNorFlashErase(UINT32 addr, UINT32 len)//addr擦除起始地址, len擦除长度

extern BOOLEAN EtNorFlashRead(UINT32 from, UINT32 len, void *buf)//from读取起始地址,len读取长度,*buf指向保存读取数据的数组的指针

extern BOOLEAN EtNorFlashWrite(UINT32 to, UINT32 len, void *buf)//from写入起始地址,len写入长度,*buf指向保存写入数据的数组的指针

#include<iostream>

#include<string>

using namespace std

void title(){

string cor[4]={"╔","╗","╚","╝"},nor="║"

cout<<cor[0]<<"═════════"<<cor[1]

cout<<"\n"<<nor<<"身份证校验码计算器"<<nor<<"\n"

cout<<cor[2]<<"═════════"<<cor[3]

}

int main(){

char n[32]

unsigned short int a[17],s=0,num

bool j

title()

cout<<"\n 请输入17位身份证号码:"

do{

cin>>n

int i

for(i=0i<=31i++){

if(n[i]=='\0'){

num=i

break

}

}

if(num!=17){

system("cls") title()

cout<<" 号码无效。\n 请输入17位身份证号码:"

}

}

while(num!=17)

short m[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}

for(int i=0i<=16i++){

a[i]=n[i]-'0'

a[i]*=m[i]

s+=a[i]

}

s%=11 char x

switch(s){

case 1: x='0' break case 2: x='X' break

case 3: x='9' break case 4: x='8' break

case 5: x='7' break case 6: x='6' break

case 7: x='5' break case 8: x='4' break

case 9: x='3' break case 10: x='2'break

case 0: x='1' break

}

system("cls") title()

cout<<"\n 计算结果:\n"

cout<<"┏━━━━━━━┳━━━━━━━━━┓"

cout<<"\n┃17位身份证号码┃"<<n

cout<<" ┃\n┠───────╂─────────┨"

cout<<"\n┃校验码┃"<<" "<<x<<"┃"

cout<<"\n┠───────╂─────────┨"

cout<<"\n┃完整身份证号码┃"<<n<<x<<"┃"

cout<<"\n┗━━━━━━━┻━━━━━━━━━┛\n\n 感谢使用!"

system("pause>nul")

}