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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

各開發平臺編程技巧

[復制鏈接]
跳轉到指定樓層
樓主
ID:60266 發表于 2014-8-18 00:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  本文說的某些技巧是基于某個編譯與調試環境的,其中的有些規則是相同的,有些是有差別的;

【keil環境,M3硬件平臺】1: 全局變量的定義:      int Array[100];
                static  intArray[100];這兩種定義方法有何區別?
  【為什么單步調試時,有時候無法查看 staticint Array[100]數組,有時候可以,但是intArray[100]卻不會有這種現象?
  大家都知道用在函數體外定義的變量或數組,不論是否添加static,他們的屬性都是全局的,在RAM中,他們都對應的物理地址;只不過在C文件中不同的地方定義,它的作用是不一樣的;
  如果在已是全局變量或全局數組前加上static,情況會如何?加上static表明該符號只能在文件內使用,即不能使用符號導出;在其他的文件中不能看見該符號,沒有加static的全局變量,其他文件可以通過符號導出應用該符號。
  那么keil環境中,調試的時候,又會有什么不一樣?在keil環境中調試時,暫停CPU的運行,這時指令會暫停在某個文件的某一行,這時如果要查看另外一個文件中的全局變量,如果變量的定義是static intArray[100],那么此時就不能在watch/memery窗口中查看,要想查看,必須讓CPU暫停在static intArray[100]所在的文件中,這樣才能查看到該變量或數組,原因就是該符號是本地的,但如果定義是intArray[100],就不會出現上面的情況。  

2:頭文件的相對路徑設置 #include   “.\..\uCGUI\LCDDriver\ili932x.h”
某個頭文件中要包含ili932x.h,而ili932x.h在本頭文件所在目錄的上層目錄,可以用上面的設置。
.\ 表示本文件所在的當前目錄下, ..\表示進入本文件上一層目錄中,

3.在keil4中,在函數體內部定義的局部變量,很多時候都是使用CPU的寄存器,如果不夠就使用它的系統棧,這樣的話,在調試的時候查看變量是看不到正確的結果的,但是程序中使用這些變量沒問題;
如我在函數中定義一個私有的結構體,接下來讀取SD卡對他的各個成員賦值;在調試時,暫停CPU來看各個變量,這時看到的全是0.以為是程序出了問題,其實是軟件的使用沒有使用正確,這時調試時是看不到這些私有數據的,他們都是棧中,調試器不能在棧中定位到他們;這時我將他們定義為被系統分配的地址的全局變量,在查看各個成員,就沒有問題。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 性一交一乱一伦视频免费观看 | 亚洲人成人一区二区在线观看 | 久久久精品久久久 | 欧美激情一区 | 草草视频在线播放 | 欧美日韩一区在线 | 美人の美乳で授乳プレイ | 午夜精品久久久久久不卡欧美一级 | 成人久久18免费网站 | 亚洲综合色视频在线观看 | 一级片网址 | 亚洲高清在线观看 | 欧美一级精品片在线看 | 国产精品国产三级国产a | 成人免费视频在线观看 | 亚洲欧洲日韩精品 中文字幕 | 国产精品国产三级国产aⅴ无密码 | 久久激情视频 | 精品欧美一区二区在线观看视频 | 免费日韩av网站 | 国产成人精品午夜视频免费 | 国产精品成人一区二区三区夜夜夜 | 午夜免费观看网站 | 精品网站999 | japan21xxxxhd美女| 丝袜美腿一区二区三区 | 一区二区视频 | 黄视频免费 | 玖玖操| 97热在线| 日朝毛片 | 99re热精品视频国产免费 | 欧美一级一 | www.久久久久久久久久久久 | 草草网 | 日本理论片好看理论片 | 欧美一区二区精品 | 国产一区 | 天天精品综合 | 久久毛片 | 午夜在线视频 |