基于ARM单片机中的部分寄存器地址为什么会相差4

控制/MCU

1878人已加入

描述

图中是LPC1114用户手册系统控制模块(SYSCON)中的部分寄存器,请看红色框内,地址相差0x4。为什么会相差4?很多初学者问我这个问题,高手就请绕过吧。

寄存器

计算机、单片机都是以字节为单位进行存储的。这里的4就是4个字节的意思。上面列举的LPC1114是ARM Cortex-M0内核,STM32是ARM Cortex-M3内核,这两ARM单片机都是32位的。1个字节是8位,4个字节就是32位。32位单片机的寄存器基本上是32位的,8位单片机的寄存器基本上也是8位的。

打开你曾经用过的reg51.h文件,看看普通51单片机的寄存器地址映射,一共不到100个寄存器,几下就写完了。但是ARM单片机内部的模块非常多,寄存器也非常多,寄存器地址映射文件如果像51那样写,也可以,但是还有一种更有利于程序阅读和书写的而方法,就是利用结构体,所以当你打开ARM单片机的寄存器映射文件后(例如lpc11xx.h、stm32f10x_map.h),你会看到,他们的地址全部采用结构体的形式,一个同类模块的所有寄存器被放在了同一个结构体内部。在以后写程序的时候,不论是书写还是阅读,都有很大的作用。例如下面一条语句:

LPC_SYSCON-》PRESETCTRL=0x1;

从语句中就可以看出,这是在对SYSCON模块中的PRESETCRTL寄存器进行配置。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分