这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教flash烧写原理

共5条 1/1 1 跳转至

请教flash烧写原理

菜鸟
2005-09-03 00:40:26     打赏

flash编程与擦除的程序里一直搞不懂这几行代码的意思

*((volatile unsigned short *) FLASH_START_ADDR+FLASH_ADDR_UNLOCK1)=FLASH_DATA_UNLOCK1
既然已经在宏定义里已经定义了FLASH_START_ADDR是起始地址0x0,以及FLASH_ADDR_UNLOCK1解锁地址,为什么前面要加上(volatile unsigned short *) 呢,回上这个是什么意思呢?
为什么不能像这样
*(FLASH_START_ADDR+FLASH_ADDR_UNLOCK1)=FLASH_DATA_UNLOCK1
直接往地址里写入解锁数据或者更简单的
*FLASH_ADDR_UNLOCK1=FLASH_DATA_UNLOCK1

请各位高人指点一下





关键词: 请教     flash     烧写     原理    

菜鸟
2005-09-03 00:50:00     打赏
2楼

*(volatile unsigned short *) 的目的是类型转换。因为FLASH_START_ADDR+FLASH_ADDR_UNLOCK1只是一个地址,需要类型转换。

FLASH_START_ADDR+FLASH_ADDR_UNLOCK1 = FLASH_ADDR_UNLOCK1
但如果你的FLASH_START_ADDR变化了呢?主要是出于方便的考虑。


菜鸟
2005-09-03 17:06:00     打赏
3楼

flash执行编程或者擦除命令不是只是能是从起始地址偏移0x555,写入0xAA;在0xaaa写入0x55吗,难道FLASH_START_ADDR可以是任意flash范围内的地址吗?


菜鸟
2005-09-03 19:55:00     打赏
4楼

这个和具体的板子有关系,通过配置MEMORY,一片FLASH可以配置在存储空间的很多个地方。例如,可以是地址0x0处,也可以是地址0x100000,等等.....

对FLASH操作的命令的目标地址都是相对于FLASH的起始地址。

[align=right][color=#000066][此贴子已经被作者于2005-9-3 11:57:17编辑过][/color][/align]

菜鸟
2005-09-04 01:43:00     打赏
5楼

哦,明白了.

谢谢


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]