- 高效微控制器C語言編程
- (美)馬克·盧瓦
- 2403字
- 2025-06-05 13:36:22
前言
在一個新的JavaScript框架幾乎每天都在涌現(xiàn)的世界里,為什么要深入研究像C這樣古老而基礎(chǔ)的語言呢?首先,如果你希望跟上所有這些框架的潮流,你可能希望掌握一些提供許多“現(xiàn)代”語言基礎(chǔ)的技術(shù)。你是否在像TIOBE這樣的網(wǎng)站上查看過流行的編程語言,并發(fā)現(xiàn)C語言一直居于榜首?也許你對高級的顯卡很感興趣,想看看驅(qū)動它們的軟件是如何工作的。或者你正在探索更新且更小巧的小玩意兒,比如Arduino,并聽說C語言是上手這項工作的正確工具。
不管是什么原因,你能閱讀本書真是太好了。C是一門基礎(chǔ)語言,了解其語法和特點將使你具備非常持久的計算機語言素養(yǎng),從而可以更輕松地掌握新的語言和風(fēng)格。在編寫設(shè)備驅(qū)動程序或操作系統(tǒng)的底層代碼時,C語言(及其衍生語言C++)仍然被廣泛使用。而物聯(lián)網(wǎng)正為資源有限的微控制器注入新的活力,C語言非常適合在這些微型計算環(huán)境中充分發(fā)揮作用。
雖然本書專注于為有限運算能力的小型機器編寫簡潔、嚴(yán)密的代碼,但我仍將從計算機編程的基礎(chǔ)知識入手,介紹適用于任何地方的C語言的各種規(guī)則和模式。
如何使用本書
本書旨在介紹適用于上述任何情況的良好C語言編程的所有基礎(chǔ)知識。我將介紹控制結(jié)構(gòu)、運算符、函數(shù)和C語言語法的其他元素,并舉例說明可將編譯程序的大小減少幾個字節(jié)的替代模式,還將把Arduino環(huán)境作為精簡C代碼的絕佳應(yīng)用。為了更好地學(xué)習(xí)Arduino部分,你應(yīng)該具備一些構(gòu)建簡單電路以及使用LED和電阻器等元件的基本經(jīng)驗。
以下是各章的主要內(nèi)容。
第1章簡要介紹C語言的歷史和設(shè)置開發(fā)環(huán)境的步驟。
第2章介紹C語言的語句,包括基本I/O、變量和運算符。
第3章介紹分支語句和循環(huán)語句,并對變量及其作用域進行深入探討。
第4章介紹數(shù)據(jù)存儲,展示C語言在數(shù)組中操作單個比特和存儲大量大型數(shù)據(jù)的功能。
第5章介紹如何將代碼分成易于管理的小塊。
第6章介紹如何創(chuàng)建更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如何將這些結(jié)構(gòu)傳遞給函數(shù),以及如何從函數(shù)返回這些結(jié)構(gòu)。
第7章介紹如何查找和使用常用的代碼片段,幫助你完成常見任務(wù)或復(fù)雜任務(wù)。
第8章介紹如何設(shè)置Arduino開發(fā)環(huán)境,并讓一些LED燈閃爍。
第9章通過完整的Arduino項目,介紹多種電子外設(shè)(包括傳感器、按鈕和LCD)的使用。
第10章介紹一些專門用于幫助小型處理器充分利用資源的代碼編寫技巧。
第11章通過介紹編寫與Arduino IDE兼容的友好且文檔齊全的庫的技巧和竅門,進一步提高你的C語言庫技能。
第12章是最后一章,在繼續(xù)提高精益編碼技能的過程中,你可以嘗試快速完成一個物聯(lián)網(wǎng)項目,并提出一些下一步嘗試的想法。
附錄包括我所使用的硬件和軟件的鏈接,以及下載和配置書中所示的C和Arduino示例的信息。
排版約定
本書中使用以下排版約定:
斜體(Italic)
表示新的術(shù)語、URL、電子郵件地址、文件名和文件擴展名。
等寬字體(Constant width)
用于程序清單,以及段落中的程序元素,例如變量名、函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句以及關(guān)鍵字。
等寬粗體(Constant width bold)
表示應(yīng)由用戶直接輸入的命令或其他文本。
等寬斜體(Constant width italic)
表示應(yīng)由用戶提供的值或由上下文確定的值替換的文本。
該圖示表示提示或建議。
該圖示表示一般性說明。
該圖示表示警告或注意。
示例代碼
本書中的許多代碼示例都非常簡潔,手寫輸入往往會讓你受益匪淺。但這并不總是有趣的,有時你想從已知的工作副本開始,然后修改內(nèi)容。你可以從GitHub上獲取所有示例的源代碼,網(wǎng)址是https://github.com/l0y/smallerc。附錄A提供了關(guān)于下載代碼和設(shè)置文件以便在開發(fā)環(huán)境中使用的詳細說明。
這里的代碼是為了幫助你更好地理解本書的內(nèi)容。通常,可以在程序或文檔中使用本書中的代碼,而不需要聯(lián)系O'Reilly獲得許可,除非需要大段地復(fù)制代碼。例如,使用本書中所提供的幾個代碼片段來編寫一個程序不需要得到我們的許可,但銷售或發(fā)布O'Reilly的示例代碼則需要獲得許可。引用本書的示例代碼來回答問題也不需要許可,將本書中的很大一部分示例代碼放到自己的產(chǎn)品文檔中則需要獲得許可。
非常歡迎讀者使用本書中的代碼,希望(但不強制)注明出處。注明出處時包含書名、作者、出版社和ISBN,例如:
Smaller C:Lean Code for Small Machines,作者Marc Loy,由O'Reilly出版,書號978-1-098-10033-9。
如果讀者覺得對示例代碼的使用超出了上面所給出的許可范圍,歡迎通過permissions@oreilly.com聯(lián)系我們。
O'Reilly在線學(xué)習(xí)平臺(O'Reilly Online Learning)
40多年來,O'Reilly Media致力于提供技術(shù)和商業(yè)培訓(xùn)、知識和卓越見解,來幫助眾多公司取得成功。
我們擁有獨一無二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過圖書、文章、會議和我們的在線學(xué)習(xí)平臺分享他們的知識和經(jīng)驗。O'Reilly的在線學(xué)習(xí)平臺允許你按需訪問現(xiàn)場培訓(xùn)課程、深入的學(xué)習(xí)路徑、交互式編程環(huán)境,以及O'Reilly和200多家其他出版商提供的大量文本和視頻資源。有關(guān)的更多信息,請訪問http://oreilly.com。
如何聯(lián)系我們
對于本書,如果有任何意見或疑問,請按照以下地址聯(lián)系本書出版商。
美國:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中國:
北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
要詢問技術(shù)問題或?qū)Ρ緯岢鼋ㄗh,請發(fā)送電子郵件至errata@oreilly.com.cn。
本書配套網(wǎng)站https://oreil.ly/smaller-c上列出了勘誤表、示例以及其他信息。
關(guān)于書籍、課程、會議和新聞的更多信息,請訪問我們的網(wǎng)站http://oreilly.com。
我們在Facebook上的地址:http://facebook.com/oreilly。
我們在Twitter(現(xiàn)為X)上的地址:http://twitter.com/oreillymedia。
我們在YouTube上的地址:http://youtube.com/oreillymedia。
致謝
我要感謝Amelia Blevins在本書出版過程中的辛勤工作。她不僅擁有出色的項目管理技能,而且還通過巧妙的建議提高了我的寫作能力。同時感謝Amanda Quinn和Suzanne McQuade在項目初期的幫助,以及Danny Elfanbaum提供的出色技術(shù)支持。O'Reilly整個團隊是無與倫比的。
本書的技術(shù)審校人員提供了廣泛的專業(yè)知識和寶貴的反饋。Tony Crawford優(yōu)化了我關(guān)于C代碼的討論,我衷心推薦你閱讀他的著作Cina Nutshell。Alex Faber在多個平臺上運行了本書的每個示例,并確保我牢記新程序員的需求。Eric Van Hoose使我的寫作更加清晰,并幫助我梳理了整本書的層次結(jié)構(gòu)。Chaim Krause在最后一刻加入,指出了一些需要補充的內(nèi)容。
感謝我的丈夫Ron對書稿的潤色和全面支持。Reg Dyck也對我提供了不可或缺的鼓勵。如果你真的想學(xué)好一個課題,那就向Reg和Ron這樣的朋友和家人解釋它吧。這兩位先生對編程或電子學(xué)并不感興趣,但他們友好的提問幫助我在許多困難的課題上找到了想要表達的核心觀點。
- Mastering Concurrency Programming with Java 8
- Practical Data Analysis Cookbook
- LabVIEW 2018 虛擬儀器程序設(shè)計
- Java入門經(jīng)典(第6版)
- 架構(gòu)不再難(全5冊)
- MongoDB for Java Developers
- PyTorch自然語言處理入門與實戰(zhàn)
- 數(shù)據(jù)結(jié)構(gòu)簡明教程(第2版)微課版
- Julia Cookbook
- HDInsight Essentials(Second Edition)
- 愛上micro:bit
- Scala for Machine Learning(Second Edition)
- Practical Game Design with Unity and Playmaker
- Java并發(fā)實現(xiàn)原理:JDK源碼剖析
- Deep Learning for Natural Language Processing