求教dsp的LED灯编码程序。。。。。

2019-07-15 19:43发布

TOP2812例程关于LED灯有这么一段编码:unsigned int *LedADDR  = (unsigned int *) 0x2800;    //8个发光二极管寄存器地址LedCode[9]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};
*LedADDR = LedCode[Count];        //依次点亮灯,置相应位低电平
--------------------------------------------------------------------------------------哪位大神知道第一行红 {MOD}部分是怎么来的啊    0x2800这个寄存器地址是怎么来的啊我新手。。。。。。。求大神指教。。。。。不胜感激。。。。。。。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
woodmice
1楼-- · 2019-07-16 00:01
0x2800是属于硬性指定的地址,这是一种不标准的 C 编程方式;

你想将数据放在啥地方,就可以在存储区随便选一个地址,就将你的数据安排放在这里;

程序很小时,可以使用这样的方式;大型程序最好不要这样,因为你的编译器并不知道你使用了这个地址,他在编译时分配其他数据的存储空间时,会和你的这些数据造成重叠,引起程序混乱。
kzero9
2楼-- · 2019-07-16 05:50
woodmice 发表于 2014-10-23 07:50
0x2800是属于硬性指定的地址,这是一种不标准的 C 编程方式;

你想将数据放在啥地方,就可以在存储区随便 ...

奥,但为什么我把0x2800改为0x1800就不对了呢 。。。
kzero9
3楼-- · 2019-07-16 09:56
 精彩回答 2  元偷偷看……
woodmice
4楼-- · 2019-07-16 14:52
0x2800改为0x1800就不对了,可能是其他程序段也使用了0x1800;也可能0x1800这个地址根本在硬件上就不是存储空间,或者0x1800处于只读区域内(说这句是因为我不清楚TOP2812);

要想编出来的程序兼容性好,就不要使用硬性指定地址的方法来分配存储空间;而应使用标准的C语句定义变量、数据,由编译器自动分配。
kzero9
5楼-- · 2019-07-16 18:25
woodmice 发表于 2014-10-23 10:41
0x2800改为0x1800就不对了,可能是其他程序段也使用了0x1800;也可能0x1800这个地址根本在硬件上就不是存储 ...

奥奥。。那怎么使用标准的C语句定义变量、数据,由编译器自动分配储存空间啊。。。

woodmice
6楼-- · 2019-07-16 23:32
kzero9 发表于 2014-10-23 15:08
奥奥。。那怎么使用标准的C语句定义变量、数据,由编译器自动分配储存空间啊。。。

...

就是不用指定地址这些语句啊;
比如,要定义一个在同一个原文件范围内访问的变量,在文件开头部分定义就可以了;

一周热门 更多>