一、断电记忆
1、原理
断电记忆的原理是将设备在断电前的各个工作状态写入到空闲的flash闪存中,在下次上电时从flash中读取数据,让设备工作在断电前的工作状态。
TLSR8253芯片flash布局如下:
0x040000 - 0x060000为未使用区域,可将设备状态写入该区域内。
2、实现
(1)写状态到flash
/***********************************************************
* Function: write_massage_status_to_flash
* Input: none
* Output: none
* Return: none
* Notice: 将按摩仪状态写到 flash 中
***********************************************************/
void write_massage_status_to_flash(void)
{
Flash_Write_Buff[0] = massage_state.on_off;
Flash_Write_Buff[1] = massage_state.pattern;
Flash_Write_Buff[2] = massage_state.gear;
Flash_Write_Buff[3] = massage_state.heat;
flash_write_page(FLASH_ADDR, FLASH_BUFF_LEN, (unsigned char *)Flash_Write_Buff);
return;
}
(2)从flash读状态
/**********************************************************************
* Function: read_massage_status_to_flash
* Input: none
* Output: none
* Return: none
* Notice: 从 flash 中读取按摩仪断电前状态,存到按摩仪状态结构体内
**********************************************************************/
void read_massage_status_to_flash(void)
{
flash_read_page(FLASH_ADDR, FLASH_BUFF_LEN, (unsigned char *)Flash_Read_Buff);
//将从 flash 读取到的数据,存放到结构体中
massage_state.on_off = Flash_Read_Buff[0];
massage_state.pattern =