高级会员

- 积分
- 822
- 金钱
- 822
- 注册时间
- 2020-7-21
- 在线时间
- 85 小时
|
1金钱
本帖最后由 16424740 于 2021-6-19 10:50 编辑
最近做了一个52板子的可爱的LCD显示的音乐盒,能实现播放、暂停、切歌、停止并重新播放以及弹奏功能,并且会在LCD1602显示状态。
目前已经基本开发完成,我们采用了多文件编程的形式,并且配了大量注释,有很高的可移植性。目前尝试完成升降调的开发。完成后考虑开源 。
但是我们开发过程中遇到过一些问题:
我们用u16 code存储歌曲数据。本来在ROM这个文件夹里有musicLib这个c文件是打算用来存储歌曲信息的。但是code定义的变量在主函数extern u16 code Astronomia[]后,编译器不会报错,但实际上并不能正常播放。必须将code 的数据全部移到main.c才能正常使用。这导致了main.c有三百多行代码,我们自己看着也头疼。
因此希望有相关开发经验或者了解keil编译原理的大神能够解释一下这个问题,能否有相应的解决方案。
|
最佳答案
查看完整内容[请看2#楼]
从51黑科技问到了解决方案:在main.c文件里,定义一个 u16 *pdata = &Astronomia[0]; 应该考虑用指针来解决问题。
|