STM32F407探索板_大端小端问题,采用函数实现验证之后出现问题

2019-07-20 23:52发布

本帖最后由 凉风习习 于 2016-1-30 09:21 编辑

在做一个简单的图像识别的项目,摄像像头(ov7670)采集到的帧数据储存到sram(连个8bit),处理后在送到LCD显示。
LCD显示乱码(从摄像头直接送到LCD是正常的)。考虑是大小端问题导致。

在原子教程上看到407是小端模式。于是在开发板上验证
[mw_shl_code=applescript,true] //更新LCD显示
u8 Is_bigendian()
{
u16 a=0x1257;
         if(*(u8*)&a==12)
         return 1;            //返回1显示bigendian
         if(*(u8*)&a==57)
         return 0;            //返回0显示littleendian
}[/mw_shl_code]
问题来了采用上面的函数显示的是大端模式。
只有这样
[mw_shl_code=applescript,true] //更新LCD显示
u8 Is_bigendian()
{
u16 a=0x1257;
         if(*(u8*)&a==0x12)
         return 1;
         if(*(u8*)&a==0x57)
         return 0;
}[/mw_shl_code]
结果才是显示的littleendian。
请高手解答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
正点原子
1楼-- · 2019-07-21 02:48
[mw_shl_code=c,true]#include<stdio.h>
union node
{
int a;
char b[4];
};

int main()
{
union node t;
t.a=1;
printf("%d ",t.b[0]);
printf("%d ",t.b[1]);
printf("%d ",t.b[2]);
printf("%d ",t.b[3]);
}
把int的每个字节读出来。要是第一个字节为0证明是大端模式 第一个字节为1证明是小端模式[/mw_shl_code]

一周热门 更多>