储存器和寄存器

文章目录[隐藏]

储存器和寄存器

(1)、储存器映射
储存器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给储存器分配地址的过程称为储存器映射,如果再分配一个地址就叫重映射。
(2)、寄存器映射
通过#pragma预处理命令和DATA_SECTION将定义的寄存器指定到相应的储存单元内,然后即可通过C语言来操作这些寄存器。
例如:找到0X007010这个单元地址,那么可以通过查阅芯片数据手册了解此单元是系统控制寄存器功能。因此为了更好区分此单元的功能和方便后续的程序开发,可以给这个单元取一个别名SysCtrlRegs,那么这个SysCtrlRegs就是寄存器,并且这个寄存器地址就是0X007010。这个过程就是寄存器映射。
(3)、如何访问F28335寄存器内容
根据#pragma和DATA_SECTION的特点,可以使#pragma和DATA_SECTION将定义的寄存器与实际的储存单元对应起来,然后在使用C语言操作定义的寄存器,比如使用结构体等。
假如我们要让F28335的GPIO的第68管脚输出低电平,我怎么使用C语言来处理?
首先要知道GPIO外设每类寄存器所对应储存单元的首地址是哪个,比如GPIO控制寄存器,通过查询数据手册可知其首地址是0X006F80,然后使用#pragma和DATA_SECTION将定义的寄存器与实际的储存单元对应起来。

#pragma DATA_SECTION(GpioCtrlRegs,"GpioCtrlRegsFile");
该定义可在DSP28335x_GlobalVariableDefs.c文件中查找到volatile struct GPIO_CTRL_REGS GpioCtrlRegs;
GpioCtrlRegsFile是SECTIONS内定义的,该定义可在DSP28335_Headers_nonBIOS.cmd文件中查找到。

(如何跳转到函数的定义处:按住Ctrl+鼠标点击对应的函数)

版权声明:本文为CSDN博主「傻童:CPU」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45159887/article/details/121996160

生成海报
点赞 0

傻童:CPU

我还没有学会写个人说明!

暂无评论

相关推荐

趣聊51之串口通信(概念篇)

对于刚刚接触单片机的同学们来说,串口通信似乎是一个神秘感十足的东西,笔者在刚刚开始学习51单片机时,读的是郭天祥先生的那本著名的《新概念51单片机教程》,贼厚的一本书,但是等

STM32学习之新建工程模板

前言 好久没写STM32的博客了,主要还是涉及到很多核心技术,再加上代码量巨大,懒得整理,就不了了之了。 之前的开发的工程都是在已有框架上的已有产品中增加新功能,这次我决定