STM32大小端模式可以设置吗?

有小伙伴大概问了这么一个问题:STM32大小端模式可以设置吗?

要了解这个问题,就要了解大小端的基本原理,首先,你要明白大小端由什么决定?编译器、操作系统还是CPU?

其实大小端主要由CPU决定,与编译器、操作系统这些没有直接关系。

关于大小端

大小端也可以理解为字节顺序,或者端序、尾序,也就是你们看到的大端序(Big-Endian)、小端序(Little-Endian)。

关于大小端的解释网上很多教程,也不难理解。

大端模式:是指数据的高字节保存在内存的低地址中;

小端模式:是指数据的高字节保存在内存的高地址中;

1754877163132442.png

大小端模式:https://baike.baidu.com/item/大小端模式/6750542

字节顺序:

https://zh.wikipedia.org/wiki/字节序

CPU是大小端存储的决定因素

可能部分初学者被一些外界信息给误导,从而有这样的疑惑。

比如:操作系统是大端还是小端存储?Keil C51是大端模式,认为与编译器有关。

你了解大小端之后,你会发现,大小端主要有用于存储的顺序,与存储器(硬件)关系比较大,编译器和操作系统仅仅是配合CPU编译好相应的代码,而不是决定大小端的因素。

ARM大小端模式

ARM处理器默认是小端模式,但它是支持大端模式。

我们在Cortex-M3手册中有这么一些描述:在Cortex-M3中, 存储器系统支持 both 小端配置和大端配置。

2.jpg

Cortex-M3 支持 both 小端模式和大端模式。但是,单片机其它部分的设计,包括总线的连接,内存控制器以及外设的性质等, 一定要先在单片机的数据手册上查清楚可以使用的端。在绝大多数情况下,基于 CM3 的单片机(包括STM32)都使用小端模式。为了避免不必要的麻烦,基本清一色地使用小端模式。

归根结底,ARM的大小端模式还是与CPU有关,而与编译器和操作系统没有直接关系。

来源:微信公众号 | 嵌入式专栏(作者 | strongerHuang)

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。