1、在编程开发过程中必须要知道你的MCU是大端模式还是小端模式。
2、通过以下代码就能轻松知道是大端模式还是小端模式。
3、废话不多说,直接上代码。
#include "stdio.h"
#include "./usart/usart.h"
#define uint8_t unsigned char
uint8_t mcu_Small_end_test(uint8_t *intput_data);//返回0表示小端模式否则大端模式
int main(void)
{
uint8_t in_data;
usart_init_config();//串口初始化
in_data =0x01;//不要用特殊的数字哈
if(mcu_Small_end_test(&in_data) == 0 )
printf("经测试MCU为小端模式\n");
else
printf("经测试MCU为大端模式\n");
while(1);
}
typedef union
{
unsigned char test_data;
struct
{
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
}bits;
}Small_end_Type;//测试单片机是否为小端模式
uint8_t mcu_Small_end_test(uint8_t *intput_data)
{
Small_end_Type in_data;
uint8_t temp =0x00;
in_data.test_data = *intput_data;
temp |=in_data.bits.bit0<<0;
temp |=in_data.bits.bit1<<1;
temp |=in_data.bits.bit2<<2;
temp |=in_data.bits.bit3<<3;
temp |=in_data.bits.bit4<<4;
temp |=in_data.bits.bit5<<5;
temp |=in_data.bits.bit6<<6;
temp |=in_data.bits.bit7<<7;
if(temp == *intput_data)
return 0;
else
return 1;
}