软件iic怎么一直调不出来呢

This commit is contained in:
2021-10-24 22:11:58 +08:00
parent 564e56fad6
commit 21c127e2b9
14 changed files with 7479 additions and 7564 deletions
+1 -65
View File
@@ -12,43 +12,6 @@
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)
{
@@ -57,32 +20,5 @@ 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)
{
//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++;
}
IIC_SAND_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
}
-20
View File
@@ -11,26 +11,6 @@
#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);
+39 -13
View File
@@ -29,19 +29,41 @@ void iic_stop()
void iic_ack()
{
iic_scl(0);
iic_sda(0);
iic_scl(1);
iic_scl(0);
}
void IIC_Write_Byte(unsigned char IIC_Byte){
iic_scl(0);
char iic_wait_ack()
{
int a=3000;
iic_scl(1);
iic_sda(1);
change_io_function(iic_sda_GPIO_Port, iic_sda_Pin,1);
// while(read_iic_sda)
// {
// a--;
// if(a==0)
// {
// iic_stop();
// return 1;
// }
// }
HAL_Delay(1);
change_io_function(iic_sda_GPIO_Port, iic_sda_Pin,0);
return 0;
}
void IIC_Write_Byte(unsigned char IIC_Byte)
{
iic_scl(0);
for(unsigned char i=0;i<8;i++)
{
if(IIC_Byte & 0x80)
{
iic_sda(1);
}else{
}else
{
iic_sda(0);
}
IIC_Byte<<=1;
@@ -54,17 +76,20 @@ unsigned char IIC_Read_Byte()
{
unsigned char k=0;
iic_scl(0);
iic_sda(1);
change_io_function(iic_sda_GPIO_Port, iic_sda_Pin,1);
for(unsigned char i=0; i<8; i++)
{
iic_scl(1);
k<<=1;
if(read_iic_sda==1)
{
k|=0x01;
}
k<<=1;
iic_scl(0);
}
change_io_function(iic_sda_GPIO_Port, iic_sda_Pin,0);
return(k);
}
@@ -73,15 +98,16 @@ void IIC_SAND_DATE(unsigned char DEVICE_ADD,unsigned char IN_DEVICE_ADD,char *DA
{
iic_start();
IIC_Write_Byte(DEVICE_ADD);
iic_ack();
if(iic_wait_ack()){return;}
IIC_Write_Byte(IN_DEVICE_ADD);
iic_ack();
if(iic_wait_ack()){return;}
for(int a=0;a<LONG;a++)
{
IIC_Write_Byte(*DATAS);
DATAS++;
}
iic_ack();
if(iic_wait_ack()){return;}
iic_stop();
}
@@ -89,17 +115,17 @@ void IIC_READ_DATE(unsigned char DEVICE_ADD,unsigned char IN_DEVICE_ADD,char *DA
{
iic_start();
IIC_Write_Byte(DEVICE_ADD);
iic_ack();
if(iic_wait_ack()){return;}
IIC_Write_Byte(IN_DEVICE_ADD);
iic_ack();
if(iic_wait_ack()){return;}
iic_start();
IIC_Write_Byte(IN_DEVICE_ADD+1);
iic_ack();
IIC_Write_Byte(DEVICE_ADD+1);
if(iic_wait_ack()){return;}
for(int a=0;a<LONG;a++)
{
*DATAS=IIC_Read_Byte();
DATAS++;
}
iic_ack();
if(iic_wait_ack()){return;}
iic_stop();
}
+28 -10
View File
@@ -254,26 +254,25 @@ void HT1621_Display_GetButton(void)
void my_code()
{
uint32_t runtime=0,move=0;
uint8_t mode=0,overload_mode=0;
uint8_t mode=6,overload_mode=0;
uint16_t overload_times=0;
long countdown=1000;
long countdown_set=15000;
HT1621_Init();
r480_init();
EPPROM_SLOWWRITE_INIT();
EEPROM_READ_BATY(16,(char *)&config,sizeof(config_setting));
if(config.begin!=0xab)
{
mode=6;
}
config.begin=18;
EEPROM_WRITE_BATY(8,(char *)&config,sizeof(config_setting));
config.begin=1;
EEPROM_READ_BATY(8,(char *)&config,sizeof(config_setting));
while(1)
{
//get ADC
for(char a=0;a<2;a++)
{
@@ -538,9 +537,28 @@ void my_code()
break;
case 6:
//stady mode
config.begin=0xab;
//config.begin=0xab;
//EEPROM_WRITE_BATY(16,(char *)&config,sizeof(config_setting));
//mode=0;
if(HAL_GetTick()>runtime)
{
runtime+=1000;
if(dis_buff.led_run==1)
{
dis_buff.led_run=0;
dis_buff.dot4=1;
}else
{
dis_buff.led_run=1;
dis_buff.dot4=0;
}
}
dis_buff.d_num[3]=(config.begin)%10;
dis_buff.d_num[2]=(config.begin/10)%10;
dis_buff.d_num[1]=(config.begin/100)%10;
dis_buff.d_num[0]=(config.begin/1000)%10;
break;
}
@@ -582,7 +600,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();
-1
View File
@@ -24,7 +24,6 @@ typedef struct
char begin;
char key_code[2];
int time;
char end;
}config_setting;
struct display_penal