判断单片机MCU是大端还是小端模式

最近用杰理AC6966B调试博通的BK9527 U段发射芯片,一直没调通,经过测试IIC通讯是通,硬件还是好的,但是怎么都调不到与接收端成功连接。

最后咨询原厂得知提供的demo代码是大端编码模式的MCU代码,如果是小端模式,在部分写寄存器操作的过程中,如果直接传指针数据会反掉。

杰理的MCU应该是小端模式,平时写代码用memcpy函数操作指针赋值最后得到的结果都是低位在前。

为了进一步验证,网上找了一段代码验证,原理跟memcpy给指针赋值是类似的,最后成功验证到杰理的AC,AD系列都是小端模式:

typedef enum
{
	LITTLE_ENDIAN,
	BIG_ENDIAN,	
}DISTINGUISH_ENDIAN;

unsigned char little_or_big_endian(void)
{
	int test_int = 0x1234;

	return  ( *((char *)&test_int ) == 0x34 ) ? LITTLE_ENDIAN : BIG_ENDIAN;
}

代码出处:

C语言判断mcu或者cpu的大端小端单片机用_rocketzdsad的博客-CSDN博客见代码判断函数返回值就行原理是用char型指针指向int型数的低地址,强制转换后判断值typedef enum{LITTLE_ENDIAN,BIG_ENDIAN,}DISTINGUISH_ENDIAN;unsigned char little_or_big_endian(void){int test_int = 0x1234;return ( *((char *)&test_int ) == 0x34 ) ? LITTLE_ENDIAN : BIG_ENDIANhttps://blog.csdn.net/rocketzdsad/article/details/115999430

你可能感兴趣的:(个人笔记,单片机,mcu,c语言,杰理)