AVR单片机中如何写flash,目前能够读出来,就是不知道怎么将变量写到flash任意地址中

AVR单片机中如何写flash,目前能够读出来,就是不知道怎么将变量写到flash任意地址中,第1张

如果是在单片机程序中写Flash,这是一个很复杂的过程,

Atmega单片机

Flash分为两个区:可读写区(RWW),不可读写区(NRWW)

RWW:

read-while-write,也就是常说的

bootloader

区,

NRWW:no-read-while-write

一般的应用程序是在NRWW区的,也就是说不可以对flash进行 *** 作,但是你可以写一段

程序下载

到RWW区,然后这一段的程序可能对整个Flash进行读写 *** 作,所以你要实现写Flash的话,你的应用程序必须跳转到RWW区,将要写的地址传给它,然后由该部分的程序去完成 *** 作,然后再跳回你的应用程序

//对flash进行读 *** 作

void Flash_READ(void) //读flash数据

{

u8 i;

u8 t=10;

u8 code pread; /程序存储器空间的指针(Flash),指向待读地址 /

pread=0x0000;

for(i=0;i<t;i++)

chan_shu[i]=pread++;

}

//对flash进行写 *** 作

void Flash_WRITE(void)

{

u8 xdata pwrite;/程序存储器空间的指针(Flash),指向待写地址/

u8 pgen; /一般指针 /

u8 i;

u8 t=10;

EA=0; /关中断/

FLSCL |= 0x01; // set FLWE,允许通过用户软件写/擦除FLASH

PSCTL = 0x03; // 将PSWE和PSEE置1MOVX指令对应// 的FLASH页

pwrite = 0x0000; // 将指针指向待擦除页

pwrite=0; // 用movx指令向待擦除扇区的任何一个地址写入一个数据

PSCTL = 0x01; // 清除PSEEPSWE仍然置1// MOVX指令将写到对应的地址

pgen=&chan_shu[0]; /将数组值写入Flash中/

for(i=0;i<t;i++)

{

pwrite++=pgen++;

}

PSCTL = 0; // 禁止FLASH写

FLSCL = 0x8f; // 禁止FLASH写

EA=1; /开中断/

以上就是关于AVR单片机中如何写flash,目前能够读出来,就是不知道怎么将变量写到flash任意地址中全部的内容,包括:AVR单片机中如何写flash,目前能够读出来,就是不知道怎么将变量写到flash任意地址中、单片机C8051F060如何把一个数组数据写入自带的flash,能成功改好下面flash读写程序的重奖200财富!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10212438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存