STM8S EEPROM 讀寫字節(jié)操作
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 實驗平臺: STM8S103F2P6 FM 接收實驗核心板
+ 硬件 : STM8S103F2P6
+ 開發(fā)平臺: IAR For STM8 1.10
+ 仿真器 : ST-Link
+ 日期 : 2010-6-29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "stm8s.h"
unsignedcharRead_Word;
/*******************************************************************************
* ==啟用外部晶振函數(shù)==
*******************************************************************************/
voidHSE_CLK_INIT(void)
{
CLK_DeInit();
CLK_HSECmd(ENABLE);
while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY));
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
CLK_ClockSwitchCmd(ENABLE);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
}
/*******************************************************************************
* ==EEPROM初始化函數(shù)==
* FLASH_DeInit(); --> 復(fù)位EEPROM的寄存器值
* FLASH_Unlock(FLASH_MEMTYPE_DATA); --> 解鎖 對 Data EEPROM memory 進(jìn)行操作
* FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); --> 標(biāo)準(zhǔn)編程時間
*******************************************************************************/
voidEEPROM_INIT(void)
{
FLASH_DeInit();
FLASH_Unlock(FLASH_MEMTYPE_DATA);
FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
}
/*******************************************************************************
* ==Main函數(shù)==
* !!在對EEPROM進(jìn)程寫操作的時候 , 應(yīng)用程序停止運(yùn)行 ??!
* !! 如果要擦出數(shù)據(jù),就是往相應(yīng)的地址里寫入 0x00 ??!
*******************************************************************************/
voidmain(void)
{
HSE_CLK_INIT();
EEPROM_INIT();
FLASH_ProgramByte(0x4055,0x88);// 在 地址0x4055 寫入數(shù)據(jù)0x88
while(1)
{
Read_Word=FLASH_ReadByte(0x4055);// 讀出 地址0x4055 的數(shù)據(jù)
}
}
使用stvp + stlink 可以讀到stm8s103f2 的EEPROM的數(shù)據(jù)如圖:
評論