当前位置:   article > 正文

STM32存储字符串_stm32中字符串怎么定义

stm32中字符串怎么定义
1.用联合,很容易搞定,存取的时候就用数组,使用的时候就用结构

typedef  __packed struct   
{            
         u32        TimerList[48];         
         u8        InfoGuts[256];  
} Info;  

typedef __packed union  
{
        Info info;
        u8        IOArray[512];
}IOdata;

2.如果不想定义联合,直接这样写应该可以吧:
结构体数组
typedef struct
{
unsigned char No;
unsigned char date[6];
unsigned int sign;
}Fault_records_TypeDef;

Fault_records_TypeDef Fault_records[5];

I2C_24CXX_Write(EEPROM_ADDRESS, WriteAddr, &Fault_records[0].No, sizeof(Fault_records))
一次性保存整个数组到EEPROM。

另外写EEPROM的函数
void I2C_24CXX_Write(u8 EEPROM_ADDRESS,u8 WriteAddr,u8* pBuffer,u8 NumByteToWrite);
定义成
void I2C_24CXX_Write(u8 EEPROM_ADDRESS,u8 WriteAddr,const u8* pBuffer,u8 NumByteToWrite)

会更安全些


想要一次性清空结构体,查找资料如下:
缓冲区处理函数位于“string.h”中,其中包括拷贝比较移动等函数如:
memccpy memchr memcmp memcpy memmove memset
这样很方便地对缓冲区进行处理。


memest原型 (please type "man memset" in your shell) 
void *memset(void *s,  int c, size_t n); 
memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。


项目应用:


volatile typedef  __packed struct   
{            
        u8  Num[12];//设备号
        u8  PASSWORD[12]; //密码
}SettingStruct;

volatile typedef __packed union  
{
        SettingStruct   ini;
        u8              SaveDataStyle[24];
}SaveSettingTyp;

volatile SaveSettingTyp Settings;
//-----------------------------------------
/* 结构体+共用体  参数信息保存EEROM 
使用参数时用如下形式:
Settings.ini.Num
Settings.ini.PASSWORD

保存参数时用如下形式:
Settings.SaveDataStyle
//-----------------------------------------
memset((u8*)&Settings, 0, sizeof(Settings));        //清空结构体
strcpy((char*)Settings.ini.Num,(char*)"123456789");//赋值

I2C_EE_BufferWrite((u8*)&Settings.SaveDataStyle[0], EEPROM_Addr, sizeof(Settings)); //写入
I2C_EE_BufferRead((u8*)&Settings.SaveDataStyle[0], EEPROM_Addr, sizeof(Settings));  //读出


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/281039
推荐阅读
相关标签
  

闽ICP备14008679号