Day: September 26, 2022

在最後兩個文章中使用MeCrisp-Stellaris製作太陽能電池測試儀在最後兩個文章中使用MeCrisp-Stellaris製作太陽能電池測試儀

0 Comment

,我咆哮著它如何令人驚嘆但奇怪,然後讓您在基本系統上設置並閃爍一些LED。雖然我指出了Multitasker,但我們還沒有真正使用它。如此開始的系統開始,如此大約是一半的戰鬥。在微控制器內部工作不同於編譯微控制器,並找出工作流程,如何解決問題問題,以及有益資源不一定明顯。此外,在您在系統中攻擊一段時間後,您可能不會注意到MECRISP-Stellaris的一些意識。 理想情況下,你偷看了攜帶某人做他們的事情的人,你會看到他們的一些工作。這是這件作品的目標。如果您已經在我們的MECRISP-STELLARIS-PLUS-HEMBELLO版本中閃過,那麼您就可以隨時遵循。如果沒有,請返回並真正做作業。當你完成的時候,我們仍然會在這裡。這篇文章的許多帖子將非常肯定的是Mecroisp-Stellaris味道,但鑑於它在那裡耗盡了大量的碎片,這不是一個壞地方。 得到適應的 你需要習慣的第一件事就是堆棧。你知道那個老栗子對人們只能在他們腦海中留下五(七個?)嗎?將此投入測試。 上次,我簡要介紹了.s(“print stact”)命令。在Hackaday Edition中,我重新定義了傳統的Mecrisp。有點不那麼冗長,而且我的眼睛更可讀。如果你發現自己擊中了。很多,你會的,我也寫了一個(暫時)覆蓋“確定”的函數。通過將堆棧打印輸出附加到它來提示,每當您按Enter鍵時。鍵入print.stack並命中輸入一個時間更多的時間查看它是如何工作的。擊中重置按鈕或鍵入重置將擦除RAM中的所有內容,並且包含堆棧打印提示,因此您將返回乾淨的板岩。 現在可能是與堆棧運營商一起玩的好時機。你讀過MECRISP詞彙表嗎?瀏覽那裡的堆棧雜耍操作列表。打開print.stack並播放,直到他們都有意義。 你有沒有跑過單詞?它佔據了一個第四個神話的鏈接列表,以及它們生活的內存位置以及一些額外的細節 – 除非您正在調試系統本身,否則太多了。 MECRISP中有一個額外的,非標準的單詞,只需打印出函數名稱:列表。現在給那次拍攝。如果您還沒有定義幾個單詞,請執行此操作。 :HW。“你好,世界!” CR; 是一個很好的人。 內存中的層數 MECRISP-Stellaris’記憶分為兩個總位置:RAM和Flash。在“ – MECRISP-Stellaris核心 – ”標記之前提供的所有單詞都在RAM中,並將在重置或掉電時丟失。新的RAM功能將附加到列表的前部。 在“MECRISP-Stellaris核心”之後,標記在閃存中起作用。在Flash的早期部分,之前“ – 閃存字典 – ”是傳統的MECRISP核心。從那裡直到“”是從通常有用的MECRISP分佈中獲取的單詞,包括一些調試功能和多任務處理。在“”之前是EMBELLO庫的貢獻,包括許多GPIO定義,並且在此帖子系列中添加了“”之前。 不明顯的是,所有這些標記都帶有周圍的括號是基石。這些允許您清除閃爍,直到內存位置。因此,如果您已將一些額外的功能添加到Flash,並且希望清除到Hackaday Edition默認狀態,則可以輸入>。將刪除額外功能,芯片復位。 (請注意,這丟失了RAM中的任何東西!)命令eraseflash將讓您回到“ – 閃存字典 – ”標記。 重寫歷史 如果您使用相同名稱定義兩次單詞,則字典中將有兩個版本的單詞。當調用或編譯一個單詞時,解釋器通過內存,從RAM的頂部向下看,然後從閃存的末尾回到開頭。因此,RAM中具有相同名稱的單詞在閃存中的那些之前被調用。可以特別奇怪的是,因為它實時編譯,所以在任何調用字中引用的單詞是在定義主叫詞時在頂部的字樣。製作纏結的歷史是一個瘋狂的方式。 :foo。“foo!” ; :酒吧foo。“酒吧!” ; 酒吧foo!酒吧!好的。 :foo。“bizzle!” ;重新定義foo。好的。 Foo Bizzle!好的。 酒吧foo!酒吧!好的。 另一方面,這是一個很好的工作方式,利用這些各種內存功能。 RAM在每次重置時都會被刪除,給您一個乾淨的板岩,但通過使用基石,閃光燈也不是不可變的。當然,你必須擦除閃光的更深,假設其中一些是有用的,你必須在以後重新定義更多的單詞。這表明了一種開發的分層技術,最“核心”詞彙最內心。這也是自然的,因為需要被稱為單詞,所以定義基礎知識首先是有意義的。 通過調用CompiletoFlash來調用CompIleToram或Flash,您可以將新單詞編譯為RAM(默認值)。在RAM中原型您的單詞。感到互惠互惠覆蓋它們,因為您想要的很多時代,但請記住,在更改上游的內容以保持呼叫歷史完好無損後必須重新定義任何依賴的單詞。一旦您使用塊的開發,鍵入RESET和CLEAR RAM。現在將這些單詞重新定義為閃存。如果您從底部開發您的應用程序,那麼您會發現這一切都掛在一起。當您在已經寫入閃存的東西中發現了一個錯誤時,基石就會救援。 最後,這種分層的定義性質可以非常方便。例如,閃存中定義的函數init在每個重置時都會在每個重置上運行。它包括設置處理器速度和系統勾號的東西,您可能不想亂七八糟。因為你可以覆蓋init,並且任何編譯都使用編譯時可用的單詞,只需將功能層分成init::init init。“howdy!” CR;。第一個“init”是新單詞的名稱,第二個是調用預先存在的init,並執行所有設置。剩餘的定義是您的播放。在重新啟動時,一切都將在購買時進行。 生物舒適 我在編輯器(vim)中寫了很多代碼,然後將其發送到芯片以播放。非常具體地,我寫了一個呼叫@upload.sh的腳本,其中包含以下內容: [[$ […]