/*
**********************************************************************************************************************************
* Name : STM8S存储器的读写操作
* Author : MingMing
* Release : 2014/1/2
* Update : 2014/1/2
* E-mail : clint.wang@foxmail.com
**********************************************************************************************************************************
*/
在芯片中存储器一般分为两种:一种是EEPROM(数据存储器),另一种是FLASH ROM(程序存储器)。它们都是非易失性存储器,但是在特性上有一些差别。EEPROM读写最小单元为字节,在同一个地址重复写入数据时允许不进行擦除操作。FLASH ROM是按照扇区读写的,在同一个地址重复写入数据时需要擦除该地址才能再次写入。
STM8S的芯片集成了EEPROM和FLASH ROM两种存储器,前者负责存储数据和Option Byte(选项字节),后者负责存储代码。
Stm8s_flash.h文件中代码如下所示:
**********************************************************************************************************************************
* Name : STM8S存储器的读写操作
* Author : MingMing
* Release : 2014/1/2
* Update : 2014/1/2
* E-mail : clint.wang@foxmail.com
**********************************************************************************************************************************
*/
在芯片中存储器一般分为两种:一种是EEPROM(数据存储器),另一种是FLASH ROM(程序存储器)。它们都是非易失性存储器,但是在特性上有一些差别。EEPROM读写最小单元为字节,在同一个地址重复写入数据时允许不进行擦除操作。FLASH ROM是按照扇区读写的,在同一个地址重复写入数据时需要擦除该地址才能再次写入。
STM8S的芯片集成了EEPROM和FLASH ROM两种存储器,前者负责存储数据和Option Byte(选项字节),后者负责存储代码。
Stm8s_flash.h文件中代码如下所示:
/*
***************************************************************************
* @file stm8s_flash.h
* @brief This file is used to configure the Library.
* @author clint.wang
* @platform IAR For STM8S 1.31 + STM8S105C6
* @date 12/27/2013
******************************************************************************
*/
#ifndef __STM8S_FLASH_H__
#define __STM8S_FLASH_H__
//
#include <iostm8s105c6.h>
#include "stm8s_type.h"
//
#define STM8S105
#ifdef STM8S105
#define FLASH_PROG_PHYSICAL_ADDR_START 0x8000 /* 程序存储区首端地址 */
#define FLASH_PROG_PHYSICAL_ADDR_END 0xFFFF /* 程序存储区末端地址 */
#define FLASH_PROG_BLOCKS_NUMBER 256 /* 程序存储区的块数 */
#define FLASH_DATA_PHYSICAL_ADDR_START 0x4000 /* 数据存储区首端地址 */
#define FLASH_DATA_PHYSICAL_ADDR_END 0x43FF /* 数据存储区末端地址 */
#define FLASH_DATA_BLOCKS_NUMBER 8 /* 数据存储区的块数 */
#define OPTION_BYTE_PHYSICAL_ADDR_START 0x4800 /* 选项字节首端地址 */
#define OPTION_BYTE_PHYSICAL_ADDR_END 0x487F /* 选项字节末端地址 */
#define OPTION_BYTE_NUMBER 15 /* 选项字节的长度 */
#define FLASH_BLOCK_SIZE 128 /* 每