void Save() { unsigned char temp; Sector_Erase(); Byte_Program(10,Id_data); temp = BUFF; Byte_Program(5,temp); temp = BUFF>>8; Byte_Program(6,temp); temp = BUFF>>16; Byte_Program(7,temp); Byte_Program(20,Volum); //保留关机前的音量,重启后的音量不变 Byte_Program(21,temp_Model); Byte_Program(22,Fre_num); //保留频率 Byte_Program(23,Pilot_ID_H); Byte_Program(24,Pilot_ID_L); } void Reload() { uint32_t temp; Id_data = Byte_Read(10); if((Id_data==0xff)||(Id_data==0xbb)||(Id_data==0xaa)) Id_data = 0x11; BUFF = 0; temp = Byte_Read(5); BUFF |= temp; temp = Byte_Read(6); BUFF |= temp<<8; temp = Byte_Read(7); BUFF |= temp<<16; if(BUFF== 0x00FFFFFF) { BUFF = FRE[0]; //开机显示频率 } temp = Byte_Read(23); if(temp == 0xFF) { temp = 81; } Pilot_ID_H = temp; temp = Byte_Read(24); if(temp == 0xFF) { temp = 00; } Pilot_ID_L = temp; SendPILOTBUFF[2] = Pilot_ID_H; SendPILOTBUFF[1] = 0x00; SendPILOTBUFF[0] = Pilot_ID_L; temp = Byte_Read(20); if(temp == 0xFF) { temp = 2; } Volum = temp; temp = Byte_Read(21); if(temp == 0xFF) { temp = IU2060_Model; } temp_Model = temp; temp = Byte_Read(22); if(temp == 0xFF) { temp = 0; } Fre_num = temp; }
时间: 2024-03-30 07:33:45 浏览: 17
这是一段嵌入式系统中的代码,包括两个函数Save()和Reload()。
Save()函数的作用是将当前的系统参数保存到存储器中。首先执行Sector_Erase()函数擦除一个扇区,然后调用Byte_Program()函数将各个参数写入存储器中,其中包括Id_data、BUFF、Volum、temp_Model、Fre_num、Pilot_ID_H和Pilot_ID_L等参数。
Reload()函数的作用是从存储器中读取保存的系统参数,并将其恢复到系统中。首先调用Byte_Read()函数读取各个参数,然后将其赋值给相应的变量。在读取BUFF参数时,将读取的三个字节合并成一个32位的变量。如果读取的参数值为0xFF,则使用默认值。最后将Pilot_ID_H、Pilot_ID_L和Volum等参数用于发送PILOTBUFF和设置系统参数。
整个代码的作用是在系统关机前将当前的系统参数保存到存储器中,然后在系统重启后从存储器中读取参数并恢复到系统中。这样就可以实现系统参数的持久化,避免每次启动系统时需要重新设置参数。
相关问题
typedef unsigned char *byte_pointer;代码解释
这行代码定义了一个名为byte_pointer的typedef类型别名,它表示一个指向unsigned char类型的指针。这意味着可以使用byte_pointer来声明或定义指向unsigned char类型的指针变量,使代码更加简洁和易于阅读。例如,以下代码将定义两个指向unsigned char类型的指针变量x和y:
```
byte_pointer x, y;
```
这里需要注意的是,由于unsigned char类型占用1个字节,因此byte_pointer类型的指针变量在使用时往往会涉及到字节级别的操作,比如内存中数据的读取和写入。
unsigned char Get_Key(void) { unsigned char Temp_Key; unsigned char Ret_Key; Ret_Key = Key_NONE; Temp_Key = Scan_Key(); if(Temp_Key == g_Key_Back) { if (Temp_Key == Key_NONE) { Ret_Key =Key_NONE; longTouchKey_up=1;//表示抬起 shortTouchKey_up=1; } else { g_Key_Count ++; if(g_Key_Count>10&&g_Key_Count<20) { g_Key_Count = 20; Ret_Key = Temp_Key; } else if(g_Key_Count>200) { Ret_Key = Temp_Key+0x10; g_Key_Count=0; } } } else { g_Key_Back=Temp_Key; g_Key_Count=0; Ret_Key =Key_NONE; } return Ret_Key; }
这段代码是一个函数,名为"Get_Key"。这个函数的返回值是一个无符号字符(unsigned char)类型的变量,函数体内有一些变量的声明和初始化。这个函数的主要功能是获取按键输入的信息,其中包括长按和短按两种按键方式。这个函数会不断地扫描按键的状态,如果检测到按键有变化,就会根据按键的状态和计数器的值来判断是短按还是长按,并返回相应的按键值。具体的实现细节可以参考代码注释。