我在MDK518环境下, 使用
STM32F072
芯片,在做结构体时,定义了两个变量saveblock,Storage。用指针访问saveblock成功,访问Storage时就跳转到硬件错误, 两个变量是同一个结构,进行的同样的操作,为什么先定义的那个就没事,后定义的那个旧不能正常访问。
typedef union
{
u8 Mem[6];
struct
{
u8 ID : 8;
u8 Year : 8;
u8 Month : 4;
u8 Day : 6;
u8 Hour : 6;
u8 Minute : 8;
u8 Second : 8;
}Date;
}Date_Union;
typedef struct {
u8 Machine_State[2];
Date_Union Date_Result;
}STORAGE;
STORAGE saveblock,Storage;
int main()
{
u16 *Tmp;
u16 TestValue;
saveblock.Date_Result.Date.ID=0x15;
Storage.Date_Result.Date.ID=0x16;
Tmp = (u16*)&saveblock;
Tmp+=2;
TestValue = *Tmp;
Tmp = (u16*)&Storage;
Tmp+=1;
TestValue = *Tmp; //调试的时候 在这里跳转到硬件错误 不能正常读取
while(1);
}
测试了F76x运行下代码没有问题。楼主看下fault的时候Tmp的地址是不是有问题。
一周热门 更多>