完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
TOP2812例程关于LED灯有这么一段编码:unsigned int *LedADDR = (unsigned int *) 0x2800; //8个发光二极管寄存器地址LedCode[9]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};
*LedADDR = LedCode[Count]; //依次点亮灯,置相应位低电平 --------------------------------------------------------------------------------------哪位大神知道第一行红色部分是怎么来的啊 0x2800这个寄存器地址是怎么来的啊我新手。。。。。。。求大神指教。。。。。不胜感激。。。。。。。 |
|
相关推荐
6个回答
|
|
|
0x2800是属于硬性指定的地址,这是一种不标准的 C 编程方式;
你想将数据放在啥地方,就可以在存储区随便选一个地址,就将你的数据安排放在这里; 程序很小时,可以使用这样的方式;大型程序最好不要这样,因为你的编译器并不知道你使用了这个地址,他在编译时分配其他数据的存储空间时,会和你的这些数据造成重叠,引起程序混乱。 |
|
|
|
|
|
奥,但为什么我把0x2800改为0x1800就不对了呢 。。。 |
|
|
|
|
|
|
|
|
|
|
|
0x2800改为0x1800就不对了,可能是其他程序段也使用了0x1800;也可能0x1800这个地址根本在硬件上就不是存储空间,或者0x1800处于只读区域内(说这句是因为我不清楚TOP2812);
要想编出来的程序兼容性好,就不要使用硬性指定地址的方法来分配存储空间;而应使用标准的C语句定义变量、数据,由编译器自动分配。 |
|
|
|
|
|
奥奥。。那怎么使用标准的C语句定义变量、数据,由编译器自动分配储存空间啊。。。 |
|
|
|
|
|
就是不用指定地址这些语句啊; 比如,要定义一个在同一个原文件范围内访问的变量,在文件开头部分定义就可以了; |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
TMS320C6748 板卡设计中是否一定需要有SDRAM或者DDR
1958 浏览 0 评论
988 浏览 0 评论
3654 浏览 1 评论
【六岳微LY-F335开发板试用体验】epwm启动ADC并在OLED上显示结果
4493 浏览 0 评论
【六岳微LY-F335开发板试用体验】软件开发环境及调试下载
4541 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 16:52 , Processed in 1.125338 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2297