久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM8L的EEPROM讀寫原理及例程
[打印本頁]
作者:
51hei小林
時間:
2016-10-10 00:15
標題:
STM8L的EEPROM讀寫原理及例程
STM8L103C6擁有1KB的片上EEPROM,可以用來存儲程序需要用到的參數,就不需要額外使用24C02這樣的外部存儲器了.
同時,和24C02比起來,STM8L的片上EEPROM操作更簡單,可以直接對地址進行操作,進行數據讀寫.
下圖是STM8L閃存和EEPROM的地址分配圖,可以看到EEPROM的起始地址為0x001000,結束地址為0x0013FF.共1024個地址空間,所以EEPROM的容量為1KB.
EEPROM在上電復位后是寫保護
的,在向其中寫
入數據時,需要解鎖,關閉寫保護.解鎖流程為:
①第一次向FLASH_DUKR寫入密鑰0xAE
②第二次向FLASH_DUKR寫入密鑰0x56
兩次都寫入正確后,寫保護功能被關閉,可以對EEPROM區域進行寫操作.解鎖成功后,DUL位會被置位,在寫完密鑰后,可以讀取DUL位來判斷有沒有解鎖成功.
在向EEPROM寫數據時,單片機內部會產生高壓對EEPROM寫操作,如果這個時候被中斷打斷,會造成單片機異常,所以寫操作時,需要關閉總中斷,防止意外發生.
本例程,先向EEPROM的四個地址各寫入了一個字節的數據,然后從這個四個地址讀取出這些數據,和寫入數據進行對比.從下圖可以看到,讀出數據和寫入數據完全一致.
/****************************************************************************************
*開發環境:IAR for stm8 v6.5.3
*硬件平臺:STM8L-DISCOVERY
*功能說明:本例程,先向EEPROM的四個連續地址寫入四個字節數據,然后讀取出來,與寫入數據對比
*作 者:茗風
****************************************************************************************/
#include"iostm8l152c6.h"
#include"stdint.h"
#define EEPROM_STARTADDR 0x1000
/******************************************************************************************************
*名 稱: void EEPROM_WriteByte(uint16_t Addr,uint8_t Data)
*功 能: 向EEPROM指定地址寫入一字節數據
*入口參數: Addr:存放數據的偏移地址
* Data:待寫入的數據
*出口參數:無
*范 例:
******************************************************************************************************/
void EEPROM_WriteByte(uint16_t Addr,uint8_t Data)
{
uint8_t *Ptr_SegAddr; //Segment pointer
Ptr_SegAddr = (uint8_t *)(EEPROM_STARTADDR+Addr); //Initialize pointer
FLASH_DUKR=0xAE;
FLASH_DUKR=0x56;
while(!FLASH_IAPSR_DUL);//如果DUL沒有置位,說明解鎖不成功,最好加入超時判斷
asm("sim");//關閉中斷
*Ptr_SegAddr=Data; //指定地址,寫1 字節
while(!FLASH_IAPSR_EOP);//等待寫操作完成,最好加入超時判斷
asm("rim");//打開中斷
FLASH_IAPSR_DUL=0;//上鎖,對DATA EEPROM寫保護
////////////////////
}
/******************************************************************************************************
*名 稱:uint8_t EEPROM_ReadByte(uint8_t Addr)
*功 能:從EEPROM中讀取一個字節數據
*入口參數:Addr:存放數據的偏移地址
*出口參數:Data:讀回的數據
*說 明:無
*范 例:無
******************************************************************************************************/
uint8_t EEPROM_ReadByte(uint16_t Addr)
{
uint16_t Data=0;
uint8_t *Ptr_SegAddr;
Ptr_SegAddr = (uint8_t *)(EEPROM_STARTADDR+Addr); //Initialize pointer
Data=*Ptr_SegAddr;
return Data;
}
void main(void)
{
static uint8_t t1=0,t2=0,t3=0,t4=0;
EEPROM_WriteByte(0x00,0x40);
EEPROM_WriteByte(0x01,0x41);
EEPROM_WriteByte(0x02,0x42);
EEPROM_WriteByte(0x03,0x43);
t1=EEPROM_ReadByte(0x00);
t2=EEPROM_ReadByte(0x01);
t3=EEPROM_ReadByte(0x02);
t4=EEPROM_ReadByte(0x03);
// asm("rim"); //enable interrupts
while(1)
{
// asm("wfi");
}
}
復制代碼
作者:
188172376
時間:
2024-3-10 15:02
很好的程序
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩人体在线
|
国产精品免费一区二区三区
|
91精品国产91久久久久久不卞
|
中文字幕免费
|
亚洲欧美视频
|
久久精品视频91
|
国产精品久久久久久久久久三级
|
国产九九九九
|
国产精品无码专区在线观看
|
久久青青
|
亚洲不卡在线观看
|
日韩欧美一二三区
|
久久丁香
|
欧美成年人视频在线观看
|
91性高湖久久久久久久久_久久99
|
亚洲国产精品久久久久婷婷老年
|
亚洲一区二区久久久
|
久久精品综合
|
国产精品99久久久久
|
国产欧美精品一区二区三区
|
亚洲国产黄色av
|
国产一二三区免费视频
|
国产精品 欧美精品
|
91精品国产综合久久久久久蜜臀
|
美女张开腿露出尿口
|
日本成人福利
|
91精品久久久久久久
|
一区二区精品
|
一区二区三区亚洲精品国
|
精品视频在线免费观看
|
一级毛片在线看
|
午夜在线小视频
|
午夜av电影
|
欧美日本韩国一区二区三区
|
www.天堂av.com
|
国产精品视频一区二区三区
|
久久久久91
|
日韩综合网
|
欧美成人免费在线
|
看av电影
|
日韩欧美二区
|