久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2152|回復: 3
打印 上一主題 下一主題
收起左側

code數組定義在其他C語言文件extern后無法正常調用的問題

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 Carose 于 2021-6-19 14:01 編輯

最近做了一個52單片機板子的可愛的LCD顯示的音樂盒,能實現播放、暫停、切歌、停止并重新播放以及彈奏功能,并且會在LCD1602顯示狀態。
目前已經基本開發完成,我們采用了多文件編程的形式,并且配了大量注釋,有很高的可移植性。目前嘗試完成升降調的開發。完成后考慮開源:P
但是我們開發過程中遇到過一些問:
  1. //以下為歌曲數據文件

  2. u16 code Astronomia[] =      //音階,第幾個八度(0,1,2,3),時值(八分音符為1),以0,0,0結尾才能循環
  3. {
  4.         NOTE(6,1,2), NOTE(6,1,1), NOTE(3,2,1), NOTE(2,2,2), NOTE(1,2,2), NOTE(7,1,2), NOTE(7,1,1), NOTE(7,1,1), NOTE(2,2,2),\
  5.         NOTE(1,2,1), NOTE(7,1,1), NOTE(6,1,2), NOTE(6,1,1), NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1),\
  6.         NOTE(6,1,2), NOTE(6,1,1), NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1), NOTE(6,1,2),        NOTE(6,1,1),\
  7.         NOTE(3,2,1), NOTE(2,2,2), NOTE(1,2,2), NOTE(7,1,2), NOTE(7,1,1), NOTE(7,1,1), NOTE(2,2,2), NOTE(1,2,1), NOTE(7,1,1),\
  8.         NOTE(6,1,2), NOTE(6,1,1), NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1), NOTE(1,2,1), NOTE(1,2,1),\
  9.         NOTE(1,2,1), NOTE(1,2,1), NOTE(3,2,1), NOTE(3,2,1), NOTE(3,2,1), NOTE(3,2,1), NOTE(2,2,1), NOTE(2,2,1), NOTE(2,2,1),\
  10.         NOTE(2,2,1), NOTE(5,2,1), NOTE(5,2,1), NOTE(5,2,1), NOTE(5,2,1), NOTE(6,2,2), NOTE(6,2,2), NOTE(6,2,2), NOTE(6,2,2),\
  11.         NOTE(6,2,2), NOTE(6,2,2), NOTE(6,2,2), NOTE(6,2,2), NOTE(6,2,2), NOTE(6,2,2), NOTE(6,2,2), NOTE(6,2,2), NOTE(2,2,1),\
  12.         NOTE(1,2,1), NOTE(7,1,1), NOTE(5,1,1), NOTE(6,1,2), NOTE(6,1,1), NOTE(3,2,1), NOTE(2,2,2), NOTE(1,2,2), NOTE(7,1,2),\
  13.         NOTE(7,1,1), NOTE(7,1,1), NOTE(2,2,2), NOTE(1,2,1), NOTE(7,1,1), NOTE(6,1,2), NOTE(6,1,1), NOTE(1,3,1), NOTE(7,2,1),\
  14.         NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1), NOTE(6,1,2), NOTE(6,1,1), NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1), NOTE(7,2,1),\
  15.         NOTE(1,3,1), NOTE(6,1,2), NOTE(6,1,1), NOTE(3,2,1), NOTE(2,2,2), NOTE(1,2,2), NOTE(7,1,2), NOTE(7,1,1), NOTE(7,1,1),\
  16.         NOTE(2,2,2), NOTE(1,2,1), NOTE(7,1,1), NOTE(6,1,2), NOTE(6,1,1), NOTE(1,3,1), NOTE(7,2,1), NOTE(1,3,1), NOTE(7,2,1),\
  17.         NOTE(1,3,1), NOTE(1,3,1), NOTE(1,3,1), NOTE(1,3,1), NOTE(1,3,1), NOTE(3,3,1), NOTE(3,3,1), NOTE(3,3,1), NOTE(3,3,1),\
  18.         NOTE(2,3,1), NOTE(2,3,1), NOTE(2,3,1), NOTE(2,3,1), NOTE(5,3,1), NOTE(5,3,1), NOTE(5,3,1), NOTE(5,3,1), NOTE(6,3,2),\
  19.         NOTE(6,3,2), NOTE(6,3,2), NOTE(6,3,2), NOTE(6,3,2), NOTE(6,3,2), NOTE(6,3,2), NOTE(6,3,2), NOTE(6,3,2), NOTE(6,3,2),\
  20.         NOTE(6,3,2), NOTE(6,3,2), NOTE(0,0,0)
  21. };
復制代碼
我們用u16 code存儲歌曲數據。本來在ROM這個文件夾里有musicLib這個c文件是打算用來存儲歌曲信息的。但是code定義的變量在主函數extern u16 code Astronomia[]后,編譯器不會報錯,但實際上并不能正常播放。必須將code 的數據全部移到main.c才能正常使用。這導致了main.c有三百多行代碼,我們自己看著也頭疼。

因此希望有相關開發經驗或者了解keil編譯原理的大神能夠解釋一下這個問題,能否有相應的解決方案。



結果見置頂帖

enlight.jpg (985.66 KB, 下載次數: 50)

enlight

enlight

正面.jpg (2.34 MB, 下載次數: 33)

正面

正面

背面.jpg (3.05 MB, 下載次數: 36)

背面

背面

圖片1.png (121.88 KB, 下載次數: 43)

keil界面,問題代碼所在

keil界面,問題代碼所在
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 2#
ID:298123 發表于 2021-6-19 12:11 | 只看該作者
在這個.c文件里,定義一個 u16 *pdata = &Astronomia[0];  然后頭文件里聲明這個extern u16 *pdata;
回復

使用道具 舉報

板凳
ID:176854 發表于 2021-6-19 08:59 | 只看該作者
將"musicLib.c"改為"musicLib.h",將數組Astronomia[]放入"musicLib.h"中,最后在“main.c”加上#include “"musicLib.h"
回復

使用道具 舉報

地板
ID:922355 發表于 2021-6-19 10:36 來自手機 | 只看該作者
jjjjjjir 發表于 2021-6-19 08:59
將"musicLib.c"改為"musicLib.h",將數組Astronomia[]放入"musicLib.h"中,最后在“main.c”加上#include “ ...

感謝回復,不過這么做是不是會導致這個h文件只能被include一次。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲三区在线观看 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 成人a视频| 国产黄色在线观看 | 在线一区二区观看 | 欧美激情精品久久久久久 | 亚洲国产免费 | 草久久久 | 亚洲欧美综合精品另类天天更新 | 国产1区2区3区 | 中文字幕视频在线观看 | 国产精品视频一区二区三区四蜜臂 | 国产精品伦一区二区三级视频 | 一区在线视频 | 91久久久久久久久久久久久 | 91大神在线资源观看无广告 | 欧美日韩一区二区三区视频 | 国产精品成人在线播放 | 日韩精品中文字幕在线 | 日韩精品 电影一区 亚洲 | 最近免费日本视频在线 | 高清视频一区二区三区 | 国产中文区二幕区2012 | 精品久久一区 | 视频1区| 国产综合精品 | 黄色国产 | 成人免费毛片在线观看 | 91久久视频 | 免费观看av网站 | 日韩一级黄色毛片 | 久色| 9久9久| 日韩精品在线看 | 日韩一区二区福利视频 | 天天看片天天干 | 天天玩天天干天天操 | 欧美亚洲国产一区二区三区 | 精品蜜桃一区二区三区 | 亚洲国产一区二区三区在线观看 | 亚洲美乳中文字幕 |