ti c2000的编程疑问

2019-03-26 15:58发布

现在想学习TI c2000的单片机,在看2812的例程的时候有个疑问。头文件里面声明了一些寄存器结构,但是没有看到把这些寄存器变量跟寄存器物理地址对应关联的文件。我的疑问是如果不把这些变量和相应的单片机寄存器地址联系起来,单片机怎么知道那个变量对应哪个寄存器。望大神指点
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
elvike
1楼-- · 2019-03-27 02:24
< 在工程里面有一个文件DSP281x_Headers_nonBIOS.cmd,提到下面这一段:
PAGE 1:    /* Data Memory */

   DEV_EMU     : origin = 0x000880, length = 0x000180     /* device emulation registers */
   PIE_VECT    : origin = 0x000D00, length = 0x000100     /* PIE Vector Table */
   FLASH_REGS  : origin = 0x000A80, length = 0x000060     /* FLASH registers */
   CSM         : origin = 0x000AE0, length = 0x000010     /* code security module registers */
   XINTF       : origin = 0x000B20, length = 0x000020     /* external interface registers */
   CPU_TIMER0  : origin = 0x000C00, length = 0x000008     /* CPU Timer0 registers */
   CPU_TIMER1  : origin = 0x000C08, length = 0x000008     /* CPU Timer1 registers */
   CPU_TIMER2  : origin = 0x000C10, length = 0x000008     /* CPU Timer2 registers */
   PIE_CTRL    : origin = 0x000CE0, length = 0x000020     /* PIE control registers */
   ECANA       : origin = 0x006000, length = 0x000040     /* eCAN control and status registers */
   ECANA_LAM   : origin = 0x006040, length = 0x000040     /* eCAN local acceptance masks */
   ECANA_MOTS  : origin = 0x006080, length = 0x000040     /* eCAN message object time stamps */
   ECANA_MOTO  : origin = 0x0060C0, length = 0x000040     /* eCAN object time-out registers */
   ECANA_MBOX  : origin = 0x006100, length = 0x000100     /* eCAN mailboxes */
   SYSTEM      : origin = 0x007010, length = 0x000020     /* System control registers */
   SPIA        : origin = 0x007040, length = 0x000010     /* SPI registers */
   SCIA        : origin = 0x007050, length = 0x000010     /* SCI-A registers */
   XINTRUPT    : origin = 0x007070, length = 0x000010     /* external interrupt registers */
   GPIOMUX     : origin = 0x0070C0, length = 0x000020     /* GPIO mux registers */
   GPIODAT     : origin = 0x0070E0, length = 0x000020     /* GPIO data registers */
   ADC         : origin = 0x007100, length = 0x000020     /* ADC registers */
   EVA         : origin = 0x007400, length = 0x000040     /* Event Manager A registers */
   EVB         : origin = 0x007500, length = 0x000040     /* Event Manager B registers */
   SCIB        : origin = 0x007750, length = 0x000010     /* SCI-B registers */
   MCBSPA      : origin = 0x007800, length = 0x000040     /* McBSP registers */
   CSM_PWL     : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations. */

这一段是不是就是将寄存器变量对应到物理地址的啊?
dontium
2楼-- · 2019-03-27 04:17
 精彩回答 2  元偷偷看……
elvike
3楼-- · 2019-03-27 04:37
dontium 发表于 2014-3-28 11:37
是的。CMD文件就是联系具体地址的。

那DSP281x_Headers_nonBIOS.cmd和烧录flash/ram的那个cmd    ,这两者是什么关系呢
dontium
4楼-- · 2019-03-27 07:35
elvike 发表于 2014-3-28 12:50
那DSP281x_Headers_nonBIOS.cmd和烧录flash/ram的那个cmd    ,这两者是什么关系呢

C281x的CPU没有玩过。不过,你看看手册上寄存器、存储器的分配,再看一下CMD文件,会弄清楚它的原理的。
elvike
5楼-- · 2019-03-27 07:42
 精彩回答 2  元偷偷看……
dontium
6楼-- · 2019-03-27 08:56
《TMS320C28x Assembly Language Tools User's Guide》和《TMS320C28x Optimizing C/C++ Compiler User's Guide》中有关于command文件的说明。

这两个手册非常好。

在网上找的都是不全面的。

一周热门 更多>