Pointers 当将指针分配给结构指针时,mcu进入Hardfault处理程序

Pointers 当将指针分配给结构指针时,mcu进入Hardfault处理程序,pointers,structure,stm32,Pointers,Structure,Stm32,我使用STM32F072单片机和IAR作为编译器 当我运行下面的代码时,它将进入hardfault处理程序。我不明白为什么会这样 uint8_t*ptr1; uint32_t*ptr2; uint32温度; 类型定义结构{ uint8_t数据[10]; }示例结构; 结构传感器示例; 传感器数据[0]=0xAA; ptr1=&sensor.Data[0];//这里ptr1指向0xAA没有问题 ptr2=(uint32_t*)ptr1;//这里*ptr2是0x000000AA,所以没有问题。 温度

我使用STM32F072单片机和IAR作为编译器

当我运行下面的代码时,它将进入hardfault处理程序。我不明白为什么会这样

uint8_t*ptr1;
uint32_t*ptr2;
uint32温度;
类型定义结构{
uint8_t数据[10];
}示例结构;
结构传感器示例;
传感器数据[0]=0xAA;
ptr1=&sensor.Data[0];//这里ptr1指向0xAA没有问题
ptr2=(uint32_t*)ptr1;//这里*ptr2是0x000000AA,所以没有问题。
温度=*ptr2;//这里mcu进入硬故障处理程序
你知道我为什么会有这个问题吗


谢谢

代码对我来说似乎没问题。你有任何中断源在运行吗?检查是什么导致了高频。我打赌这是未对齐的访问。检查
ptr2
(参见if
((uint32)ptr1和3)
如果非零。如果是,则是对齐问题,正如P_u_J_u____________________________________________________________(即temp=*ptr1)代码对我来说似乎没问题。你有任何中断源在运行吗?检查导致HF的原因。我打赌这是未对齐的访问。检查
ptr2
(查看是否
((uint32_t)ptr1和3)
如果非零。如果是,则是对齐问题,正如P_u_J_u____________________________________________________________(即温度=*ptr1)