eeprom stm8l 擦除 读写_STM8L探索套件学习笔记-EEPROM(十一)
原标题:STM8L探索套件学习笔记-EEPROM(十一)
上节将到官方例程使用 EEPROM存储外围电路消耗的电流值,今天我们对 STM8L的EEPROM介绍下。STM8L带有的32K的FLASH和1K的EEPROM都可以编程和擦除,编程模式有1、字节byte,2、字word,3、BLO CK和4、编程和擦写完中断。
由于默认是锁定的,所以对FLASH和EEPROM编程首先要解锁,解锁的方式是写如寄存器特定值,0X56 0XAE。在IAR编译器当中,__eeprom 用于EEPROM 存储空间, 控制数据存放,控制指针类型和存放。@用于变量的绝对地址定位。也可以用#pragma location 命令。
EEPROM 区域数据存储:
用关键字 __eeprom 控制来存放, __eeprom关键字写在数据类型前后效果一样。
__eeprom unsigned char a;//定义一个变量存放在EEPROM空间
unsigned char __eeprom a;//效果同上
__eeprom unsigned char p[];//定义一个数组存放在EEPROM空间
对于EEPROM空间的变量操作同SRAM数据空间的操作方法一样,编译器会自动
调用 __EEPUT(ADR,VAL), __EEGET(VAR, ADR)宏函数来对EEPROM变量的
操作。
EEPROM空间绝对地址定位:
__eeprom unsigned char a @ 0x8;//定义一个变量存放在EEPROM空间
0X08单元
__eeprom unsigned char p[] @ 0x22//定义一个数组存放在EEPROM空间,
开始地址为0X22单元
__eeprom unsigned char a @ 0x08=9;//定义一个常数存放在EEPROM空
间0X08单元
__eeprom unsigned char p[] @0x22={1,2,3,4,5,6,7,8};
//定义一个组常数存放在EEPROM空间开始地址为0X22单元
由于常数在EEPROM空间的地址是已经分配的,读取EEPROM空间值可以用
变量和地址。
需要用户外加三个函数才能使得编译器使用_eeprom变量自动写入EEPROM。
/*
* The user must implement the three extern-declared functions be low
* in order for the compiler to be able to automatically write to the
* EEPROM memory when __eeprom variables are assigned to.
*/
/*
* Wait for the last data EEPROM operation to finish. Return 0 if the
* operation failed, otherwise non-zero. You may want to handle
* errors here, since the utility functions below simply ignore
* errors, aborting multi-write operations early.
*/
int __eeprom_wait_for_last_operation(void)
{
FLASH_Status_TypeDef status = FLASH_WaitForLastOperation(FLASH_MemType_Data);
return !!(status & ( FLASH_Status_Successful_Operation));
}
/*
* Write one byte to the data EEPROM memory.
*/
void __eeprom_program_byte(unsigned char __near * dst, unsigned char v)
{
FLASH_ProgramByte((u32)dst, (u8)v);
}
/*
* Write one 4-byte long word to the data EEPROM memory. The address
* must be 4-byte aligned.
*/
void __eeprom_program_long(unsigned char __near * dst, unsigned long v)
{
FLASH_ProgramWord((u32)dst, (u32)v);
}
加入了这三个函数后,我们就可以很方便的使用_eeprom的定义变量了
void main(void)
{
uint8_t temp1='a';
//temp1=2;
//temp2=0;
/* Initialize I/Os in Output Mode */
GPIO_Init(LED3_PORT,LED3_PIN,GPIO_Mode_Out_PP_Low_Fast);
//输出低电平-高速10M
GPIO_Init(LED4_PORT,LED4_PIN,GPIO_Mode_Out_PP_Low_Fast);
//输出低电平-高速10M
FLASH_Unlock(FLASH_MemType_Data);
FLASH_ProgramByte(0x1001, temp1);//eeprom memory: address is 0x1001 =temp1
FLASH_WaitForLastOperation(FLASH_MemType_Data);
//temp2=FLASH_ReadByte(0x1000);
if(num=='a')
GPIO_SetBits(LED3_PORT,LED3_PIN);
while(1);
责任编辑:
eeprom stm8l 擦除 读写_STM8L探索套件学习笔记-EEPROM(十一)相关推荐
- STM8L探索套件学习笔记(转)
源:STM8L探索套件学习笔记 转载于:https://www.cnblogs.com/LittleTiger/p/4460631.html
- eeprom stm8l 擦除 读写_[STM8L]EEPROM操作读与写
原标题:[STM8L]EEPROM操作读与写 带有片上EEPROM,常用来保存参数,事实上STM8L整个程序存储区都可以用于作为EEPROM,只是默认情况下被闭了. 不同型号的STM8L器件其内部默认 ...
- STM8L探索套件学习笔记-EXTI外部中断
http://blog.chinaunix.net/uid-23085164-id-3534045.html
- 《Go语言圣经》学习笔记 第十一章 测试
<Go语言圣经>学习笔记 第十一章 测试 目录 go test 测试函数 测试覆盖率 基准测试 剖析 示例函数 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语 ...
- Linux学习笔记(十一):磁盘配额、磁盘阵列与逻辑卷
Linux学习笔记(十一):磁盘配额.磁盘阵列与逻辑卷 磁盘配额Quota 磁盘阵列RAID RAID level 软件磁盘阵列 逻辑卷管理器LVM 基本概念:PV, VG, LV 逻辑卷创建与管理 ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- OpenCV学习笔记(十一)(十二)(十三)(十四)(十五)
OpenCV学习笔记(十一)--谈谈像素的类型和对Templates的限制使用 Templates是c++的一个很强大的特征,可以是数据结构更加安全高效.但也会增加编译时间和代码的长度,当函数被频繁调 ...
- OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold()
OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold() 一.定义: 1)固定阈值操作 double threshold( InputArray src, ...
- QT学习笔记(十一):QString类
QT学习笔记(十一):QString类 1.概述 2.编辑操作 3.查询操作 3.转换操作 1.概述 1.1 QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中.QStr ...
最新文章
- 探索Oracle之数据库升级八 12c Downgrade 11gR2
- 《系统集成项目管理工程师》必背100个知识点-98大数据的特点
- python win32转pdf 横版_使用Python3将word文档和pdf电子书进行格式互转(兼容Windows/Linux)...
- ML.NET 0.9特性简介
- oracle常用的字符串函数,Oracle的常用字符函数实验展示
- ads s参数拟合_S参数仿真(ADS)
- 基于依存句法分析的资金账户交易画像
- IPC通信:互斥锁和条件变量
- 华为手机怎么设置字体?
- python小波包分解_小波包变换(Wavelet Packet Transform)的学习笔记
- 谷歌Chrome浏览器不再支持Flash Player的完全解决方案
- spring quartz 表达式在线生成器
- 马原期末复习知识点完整版!
- 百度地图开发入门(6):3D建筑
- 蓝桥杯 Java 算法提高 盾神与积木游戏
- 手机百度云如何打开doc
- 好物分享 | 也许是最好用的文件/目录对比软件
- 惠普暗影精灵6安装Ubuntu双系统显卡及Wi-Fi问题解决
- 《人物动作:角色骨骼、蒙皮制作工艺》
- Instagram 账号被封如何申诉拿回账号?ins账号解封经验分享