文章目录[隐藏]
储存器和寄存器
(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
暂无评论