如题,在一个数据解析函数中使用了*(float *)&data[offset],其中data为uint8类型指针,指向的value地址为
可以看到地址0x20013A31非对齐,最终在执行VLDR指令时导致跑飞

VLDR需要使用对齐访问
跑飞后查看SCB寄存器发现确实是非对齐访问导致跑飞,


有两种解决方式,一种是关闭浮点运算,如iar

或者强转时使用中间变量,如
u32temp = data[offset]; \
if(*(float *)&u32temp < ((min)-FOLOAT_PRECI)) \
{ \
data[0] = reg; \
ftemp = min; \
data[1] = *(uint32*)&ftemp; \
ftemp = max; \
data[2] = *(uint32*)&ftemp; \
return 0x81; \
} \





![达梦数据查询语句不带模式名称,报错无效的表或视图名[某某表]](https://img-blog.csdnimg.cn/direct/0d72efec789f4e7d916d5984e6464667.png)












