2krom写满了,都不知道怎么优化了
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* eeprom.c
|
||||
*
|
||||
* Created on: Oct 24, 2021
|
||||
* Author: wuwenfeng
|
||||
*/
|
||||
|
||||
|
||||
#include "eeprom.h"
|
||||
#include "iic.h"
|
||||
|
||||
|
||||
|
||||
|
||||
eeprom_write_buff_info eeprom_write_buffer;
|
||||
void EPPROM_SLOWWRITE_INIT()
|
||||
{
|
||||
eeprom_write_buffer.buff=NULL;
|
||||
eeprom_write_buffer.end=NULL;
|
||||
eeprom_write_buffer.head=NULL;
|
||||
eeprom_write_buffer.save_timeout=5;
|
||||
eeprom_write_buffer.save_busy=0;
|
||||
}
|
||||
|
||||
|
||||
void EEPROM_SLOWWRITE_SERVER()
|
||||
{
|
||||
eeprom_write_buff *buff;
|
||||
char data;
|
||||
if(eeprom_write_buffer.save_busy)
|
||||
{
|
||||
if(HAL_GetTick()>eeprom_write_buffer.save_time)
|
||||
{
|
||||
eeprom_write_buffer.save_busy=0;
|
||||
}
|
||||
}else
|
||||
{
|
||||
if(eeprom_write_buffer.head!=NULL)
|
||||
{
|
||||
eeprom_write_buffer.save_busy=1;
|
||||
eeprom_write_buffer.save_time=HAL_GetTick()+eeprom_write_buffer.save_timeout;
|
||||
buff=eeprom_write_buffer.head->next;
|
||||
data=eeprom_write_buffer.head->date;
|
||||
IIC_SAND_DATE(EEPROM_ADDRESS,eeprom_write_buffer.head->add,&data,1);
|
||||
free(eeprom_write_buffer.head);
|
||||
eeprom_write_buffer.head=buff;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void EEPROM_READ_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
|
||||
{
|
||||
IIC_READ_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
|
||||
}
|
||||
|
||||
void EEPROM_WRITE_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
|
||||
{
|
||||
//IIC_SAND_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
|
||||
uint16_t addoffset=0;
|
||||
|
||||
|
||||
eeprom_write_buff *buff;
|
||||
eeprom_write_buff *buff2;
|
||||
while(LONG--)
|
||||
{
|
||||
buff =(eeprom_write_buff*)malloc(sizeof(eeprom_write_buff));
|
||||
if(buff!=NULL)
|
||||
{
|
||||
buff->add=IN_DEVICE_ADD+addoffset;
|
||||
buff->date=DATAS[addoffset];
|
||||
buff->next=NULL;
|
||||
}else{return ;}
|
||||
if(eeprom_write_buffer.head==NULL)
|
||||
{
|
||||
eeprom_write_buffer.head=buff;
|
||||
eeprom_write_buffer.end=buff;
|
||||
}else
|
||||
{
|
||||
buff2=eeprom_write_buffer.end;
|
||||
buff2->next=buff;
|
||||
eeprom_write_buffer.end=buff;
|
||||
}
|
||||
addoffset++;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* eeprom.h
|
||||
*
|
||||
* Created on: Oct 24, 2021
|
||||
* Author: wuwenfeng
|
||||
*/
|
||||
|
||||
#ifndef EEPROM_H_
|
||||
#define EEPROM_H_
|
||||
#include "main.h"
|
||||
|
||||
#define EEPROM_ADDRESS 0xa0
|
||||
|
||||
typedef struct eeprom_write_buff
|
||||
{
|
||||
struct eeprom_write_buff *next;
|
||||
uint16_t add;
|
||||
char date;
|
||||
}eeprom_write_buff;
|
||||
|
||||
typedef struct eeprom_write_buff_info
|
||||
{
|
||||
eeprom_write_buff *buff;
|
||||
eeprom_write_buff *head;
|
||||
eeprom_write_buff *end;
|
||||
uint32_t save_time;
|
||||
uint8_t save_timeout;
|
||||
uint8_t save_busy:1;
|
||||
|
||||
}eeprom_write_buff_info;
|
||||
|
||||
void EPPROM_SLOWWRITE_INIT();
|
||||
void EEPROM_SLOWWRITE_SERVER();
|
||||
|
||||
void EEPROM_READ_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG);
|
||||
void EEPROM_WRITE_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG);
|
||||
|
||||
#endif /* EEPROM_H_ */
|
||||
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
* flash.c
|
||||
*
|
||||
* Created on: 2021年10月15日
|
||||
* Author: wuwenfeng
|
||||
*/
|
||||
|
||||
|
||||
#include "flash.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
* flash.h
|
||||
*
|
||||
* Created on: 2021年10月15日
|
||||
* Author: wuwenfeng
|
||||
*/
|
||||
|
||||
#ifndef FLASH_H_
|
||||
#define FLASH_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
|
||||
#endif /* FLASH_H_ */
|
||||
@@ -6,3 +6,100 @@
|
||||
*/
|
||||
|
||||
#include "iic.h"
|
||||
#include "gpio.h"
|
||||
#define iic_sda(x) HAL_GPIO_WritePin(iic_sda_GPIO_Port, iic_sda_Pin, x)
|
||||
#define iic_scl(x) HAL_GPIO_WritePin(iic_scl_GPIO_Port, iic_scl_Pin, x)
|
||||
#define read_iic_sda HAL_GPIO_ReadPin(iic_sda_GPIO_Port, iic_sda_Pin)
|
||||
|
||||
|
||||
void iic_start()
|
||||
{
|
||||
iic_sda(1);
|
||||
iic_scl(1);
|
||||
iic_sda(0);
|
||||
iic_scl(0);
|
||||
}
|
||||
|
||||
void iic_stop()
|
||||
{
|
||||
iic_sda(0);
|
||||
iic_scl(1);
|
||||
iic_sda(1);
|
||||
}
|
||||
|
||||
void iic_ack()
|
||||
{
|
||||
iic_scl(1);
|
||||
iic_scl(0);
|
||||
}
|
||||
|
||||
void IIC_Write_Byte(unsigned char IIC_Byte){
|
||||
iic_scl(0);
|
||||
change_io_function(iic_sda_GPIO_Port, iic_sda_Pin,0);
|
||||
for(unsigned char i=0;i<8;i++)
|
||||
{
|
||||
if(IIC_Byte & 0x80)
|
||||
{
|
||||
iic_sda(1);
|
||||
}else{
|
||||
iic_sda(0);
|
||||
}
|
||||
IIC_Byte<<=1;
|
||||
iic_scl(1);
|
||||
iic_scl(0);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char IIC_Read_Byte()
|
||||
{
|
||||
unsigned char k=0;
|
||||
iic_scl(0);
|
||||
change_io_function(iic_sda_GPIO_Port, iic_sda_Pin,1);
|
||||
for(unsigned char i=0; i<8; i++)
|
||||
{
|
||||
iic_scl(1);
|
||||
if(read_iic_sda==1)
|
||||
{
|
||||
k|=0x01;
|
||||
}
|
||||
k<<=1;
|
||||
iic_scl(0);
|
||||
}
|
||||
return(k);
|
||||
}
|
||||
|
||||
|
||||
void IIC_SAND_DATE(unsigned char DEVICE_ADD,unsigned char IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
|
||||
{
|
||||
iic_start();
|
||||
IIC_Write_Byte(DEVICE_ADD);
|
||||
iic_ack();
|
||||
IIC_Write_Byte(IN_DEVICE_ADD);
|
||||
iic_ack();
|
||||
for(int a=0;a<LONG;a++)
|
||||
{
|
||||
IIC_Write_Byte(*DATAS);
|
||||
DATAS++;
|
||||
}
|
||||
iic_ack();
|
||||
iic_stop();
|
||||
}
|
||||
|
||||
void IIC_READ_DATE(unsigned char DEVICE_ADD,unsigned char IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
|
||||
{
|
||||
iic_start();
|
||||
IIC_Write_Byte(DEVICE_ADD);
|
||||
iic_ack();
|
||||
IIC_Write_Byte(IN_DEVICE_ADD);
|
||||
iic_ack();
|
||||
iic_start();
|
||||
IIC_Write_Byte(IN_DEVICE_ADD+1);
|
||||
iic_ack();
|
||||
for(int a=0;a<LONG;a++)
|
||||
{
|
||||
*DATAS=IIC_Read_Byte();
|
||||
DATAS++;
|
||||
}
|
||||
iic_ack();
|
||||
iic_stop();
|
||||
}
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@
|
||||
#define IIC_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
void IIC_SAND_DATE(unsigned char DEVICE_ADD,unsigned char IN_DEVICE_ADD,char *DATAS,uint16_t LONG);
|
||||
void IIC_READ_DATE(unsigned char DEVICE_ADD,unsigned char IN_DEVICE_ADD,char *DATAS,uint16_t LONG);
|
||||
|
||||
#endif /* IIC_H_ */
|
||||
|
||||
+16
-4
@@ -8,13 +8,13 @@
|
||||
#include "gpio.h"
|
||||
#include "button.h"
|
||||
#include "ht1621.h"
|
||||
#include "flash.h"
|
||||
#include "r480r.h"
|
||||
|
||||
#include "eeprom.h"
|
||||
extern ADC_HandleTypeDef hadc;
|
||||
|
||||
struct button key1,key2,key3,key4,overload;
|
||||
|
||||
config_setting config;
|
||||
|
||||
#define set_filtering_times 50
|
||||
struct
|
||||
@@ -264,6 +264,13 @@ void my_code()
|
||||
|
||||
HT1621_Init();
|
||||
r480_init();
|
||||
EPPROM_SLOWWRITE_INIT();
|
||||
|
||||
EEPROM_READ_BATY(16,(char *)&config,sizeof(config_setting));
|
||||
if(config.begin!=0xab)
|
||||
{
|
||||
mode=6;
|
||||
}
|
||||
|
||||
while(1)
|
||||
{
|
||||
@@ -529,7 +536,12 @@ void my_code()
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 6:
|
||||
//stady mode
|
||||
config.begin=0xab;
|
||||
//EEPROM_WRITE_BATY(16,(char *)&config,sizeof(config_setting));
|
||||
//mode=0;
|
||||
break;
|
||||
}
|
||||
|
||||
if(ADCC.adc_value[0]>600||ADCC.adc_value[1]>600)
|
||||
@@ -570,7 +582,7 @@ void my_code()
|
||||
dis_buff.button_flag[2]=0;
|
||||
dis_buff.button_flag[3]=0;
|
||||
|
||||
|
||||
EEPROM_SLOWWRITE_SERVER();
|
||||
HT1621_Display_GetButton();
|
||||
hc2_sever();
|
||||
moto_server();
|
||||
|
||||
+11
-4
@@ -13,12 +13,19 @@ void my_code();
|
||||
|
||||
|
||||
|
||||
#define HC595_DCK(x) HAL_GPIO_WritePin(HC595_DLK_GPIO_Port, HC595_DLK_Pin, x);
|
||||
#define HC595_RCK(x) HAL_GPIO_WritePin(HC595_RLK_GPIO_Port, HC595_RLK_Pin, x);
|
||||
#define HC595_SCK(x) HAL_GPIO_WritePin(HC595_SLK_GPIO_Port, HC595_SLK_Pin, x);
|
||||
#define HC595_SCK2(x) HAL_GPIO_WritePin(HC595_SLK2_GPIO_Port, HC595_SLK2_Pin, x);
|
||||
#define HC595_DCK(x) HAL_GPIO_WritePin(HC595_DLK_GPIO_Port, HC595_DLK_Pin, x)
|
||||
#define HC595_RCK(x) HAL_GPIO_WritePin(HC595_RLK_GPIO_Port, HC595_RLK_Pin, x)
|
||||
#define HC595_SCK(x) HAL_GPIO_WritePin(HC595_SLK_GPIO_Port, HC595_SLK_Pin, x)
|
||||
#define HC595_SCK2(x) HAL_GPIO_WritePin(HC595_SLK2_GPIO_Port, HC595_SLK2_Pin, x)
|
||||
#define READ_HC595_DCK HAL_GPIO_ReadPin(HC595_DLK_GPIO_Port,HC595_DLK_Pin)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char begin;
|
||||
char key_code[2];
|
||||
int time;
|
||||
char end;
|
||||
}config_setting;
|
||||
|
||||
struct display_penal
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user