- 打卡等级:以坛为家II
- 打卡总天数:441
- 最近打卡:2025-07-31 07:53:41
金牌会员
- 积分
- 1439
|
如题:我需要把3个字节长度的数据如:0x123456,存到ST32G的Flash中,然后读出来。程序是在例程《19-使用LVD低压检测中断保存EEPROM》的基础上做的,程序如下:
void READ_DATA(u32 TT_ADDR,u32 TT_DATA) //读出数据
{
u8 AA[3]={0,0,0}; //低8位,中8位,高8位
EEPROM_read_n(TT_ADDR,AA,3); //调用例程中的函数
SBUF=AA[2]; //数据读出后送到串口
while(!TI);
SBUF=AA[1];
while(!TI);
SBUF=SBUF=AA[0];
while(!TI);
TT_DATA=((u32)AA[2])<<16; //组装数据
TT_DATA=TT_DATA+((u32)AA[1])<<8;
TT_DATA=TT_DATA+AA[0];
SBUF=TT_DATA>>16; //数据再次拆开,送到串口
while(!TI);
SBUF=TT_DATA>>8;
while(!TI);
SBUF=TT_DATA;
while(!TI);
}
经过调试发现,高8位是错的,中8位和低8位是对的,例程中的数据是2字节的,这个是3字节的,是不是TT_DATA=((u32)AA[2])<<16; //组装数据
这一句出了问题?当Flash中没有数据时,读出的应该都是FF,在数据读出后,未组装之前,送到串口都是FF还是对的,在组装后,再次拆开,送到串口,高8位就变成了00,请问3个字节数据如何组装?谢谢。
|
|