微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > IAR for AVR 学习笔记(4)--Flash操作

IAR for AVR 学习笔记(4)--Flash操作

时间:11-13 来源:互联网 点击:

汇编指令LPM Rd ,Z中的Z是一个指针。所以用(const unsigned char __flash *)来强制转换为指向flash空间地址指针。故该条宏函数的正确写法应该如下:
__load_program_memory((const unsigned char __flash *)ADDR);
例:
#i nclude
#i nclude
void main(void)
{PORTB=__load_program_memory((const unsigned char __flash *)0x12);
}
该条函数书写不方便,在comp_a90.h文件有简化:
#define _LPM(ADDR) __load_program_memory (ADDR)稍微方便一点。改为
#define _LPM(ADDR) __load_program_memory ((const unsigned char
__flash *)ADDR)就更方便了,直接使用数据就可以了。
例:
#i nclude
#i nclude
#i nclude
void main(void)
{
PORTB=__LPM(0x12);// 从指定flash 空间地址单元0x12中读数据
}
__extended_load_program_memory(const unsigned char __farflash *);
//128K空间_ELPM(ADDR); //128K空间
参照上面的理解修改可以书写更简单。

4.6.自编程函数:
_SPM_GET_LOCKBITS();//读取缩定位
_SPM_GET_FUSEBITS();//读取熔丝位
_SPM_ERASE(Addr);//16位页擦除
_SPM_FILLTEMP(Addr,Word);//16位页缓冲
_SPM_PAGEWRITE(Addr;)//16位页写入
_SPM_24_ERASE(Addr); //24位页擦除
_SPM_24_FILLTEMP(Addr,Data); //24位页缓冲
_SPM_24_PAGEWRITE(Addr) //24位页写入

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top