《MicroPython核心開發筆記——基於MM32F3微控制器》是2023年6月1日清華大學出版社出版的圖書,作者:蘇勇,卓晴。
基本介紹
- 中文名:MicroPython核心開發筆記——基於MM32F3微控制器
- 作者:蘇勇,卓晴
- 出版時間:2023年6月1日
- 出版社:清華大學出版社
- ISBN:9787302630289
- 定價:89 元
- 印次:1-1
- 印刷日期:2023.06.02
內容簡介,圖書目錄,
內容簡介
MicroPython本身使用GNU C進行開發,在微控制器上實現了Python 3的基本功能,擁有完備的解析器、編譯器、虛擬機和類庫等。在保留了Python語言主要特性的基礎上,MicroPython還對微控制器的底層進行了封裝,將常用功能都封裝到庫中,甚至為一些常用的感測器和硬體編寫了專門的驅動。
全書共17章,在內容上可分為3部分: 搭建環境與基本方法(第1、2章)、移植和啟用核心功能(第3~7章)、設計實現更多模組(第8~17章),並配備了豐富的樣例程式,用於驗證MicroPython功能模組可正常工作,並演示同這些模組相關的典型編程方法。
本書力求理論與實踐緊密結合,內容翔實,實例豐富,可操作性強。本書可作為高等院校“嵌入式系統”相關課程的教材,也可供從事嵌入式系統開發與套用的工程技術人員自學,還可為電子愛好者使用嵌入式系統實現創意作品提供參考。
通過線上Git代碼倉庫 https://gitee.com/suyong_yq/micropythonsu可以下載**代碼。
圖書目錄
目錄
第1章MicroPython: 用Python對微控制器編程
1.1緣起
1.1.1一切源自Python
1.1.2從桌面系統到微控制器
1.1.3從業餘愛好到商業項目
1.1.4Python與STEM學科
1.2微控制器軟體
1.2.1什麼是微控制器
1.2.2為什麼使用MicroPython
1.2.3為什麼不是C
1.2.4彙編語言怎么樣
1.2.5BASIC語言怎么樣
1.2.6與樹莓派相比
1.3MicroPython支持的硬體
1.3.1第一塊MicroPython開發板
1.3.2ESP8266/ESP32開發板
1.3.3BBC Micro: Bit開發板
1.3.4Adafruit和支持CircuitPython的一些開發板
1.4MicroPython編程體驗
1.4.1REPL
1.4.2命令行工具
1.4.3MicroPython集成開發環境
1.4.4編寫MicroPython代碼
1.5MicroPython套用場景
1.5.1驗證新產品原型設計
1.5.2驗證硬體系統
1.5.3編程教育
1.6本章小結
第2章準備MicroPython開發環境
2.1MicroPython源碼
2.1.1獲得MicroPython的原始碼
2.1.2MicroPython源碼檔案結構分析
2.2基於Windows作業系統搭建MicroPython編譯環境
2.2.1安裝msys2基礎軟體包
2.2.2在msys2中安裝make
2.2.3在msys2中安裝Python
2.2.4在msys2中安裝GCC工具鏈
2.2.5在msys2中導入armnoneeabigcc
2.2.6編譯minimal工程驗證編譯工具鏈
2.3硬體平台介紹
2.3.1MM32F3微控制器
2.3.2PLUSF3270開發板
2.3.3F3270最小系統實驗板
2.3.4POKTKE18F開發板
2.3.5MindSDK軟體包
2.4本章小結
第3章移植MicroPython最小工程
3.1MicroPython的最小工程
3.1.1minimal項目目錄下的檔案
3.1.2從Makefile追溯編譯過程
3.2基於MM32F3微控制器移植minimal工程
3.2.1在lib目錄中添加MindSDK代碼
3.2.2在ports目錄中創建mm32f3項目目錄
3.3首次在MM32F3微控制器上運行MicroPython
3.3.1下載執行檔到MM32F3微控制器
3.3.2驗證及演示程式
3.4本章小結
第4章MicroPython類模組實現綜述
4.1基本的類模組封裝模式
4.1.1新建類模組的源檔案
4.1.2編輯Makefile
4.1.3編譯運行
4.2本章小結
第5章新建Pin類模組
5.1新建硬體外設類模組框架
5.2定義machine_pin_obj_t結構
5.3在構造函式中實現返回實例化對象
5.4在構造函式中實現多種傳參方式指定實例化對象
5.5print()和call()
5.5.1print()方法
5.5.2call()方法
5.5.3其他基礎類屬性函式
5.6實驗
5.6.1向引腳輸出電平控制小燈亮滅
5.6.2讀取引腳電平獲取按鍵值
5.7本章小結
第6章移植utime類模組
6.1utime類模組簡介
6.2MicroPython自帶的utime類實現
6.3對接硬體定時器相關的函式實現
6.4在MicroPython中添加utime類模組
6.5實驗
6.6本章小結
第7章移植SD卡類模組實現檔案系統
7.1VFS檔案系統調用關係解析
7.1.1vfs_blockdev系列函式
7.1.2VFS統一檔案系統API
7.2從檔案系統中執行Python腳本檔案解析
7.2.1mp_lexer_new_from_file()
7.2.2mp_import_stat()和mp_builtin_open()
7.3對接硬體SD卡驅動程式
7.4新建SDCard類模組
7.4.1make_new()
7.4.2read_blocks() & write_blocks()
7.4.3ioctl()
7.4.4創建SDCard類模組的類型對象
7.4.5添加SDCard類
7.4.6更新Makefile
7.5調整MicroPython核心支持檔案系統
7.5.1改寫main()函式支持檔案系統
7.5.2配置mpconfigport.h檔案
7.6啟用uos類模組
7.7實驗
7.7.1運行來自SD卡的main.py
7.7.2在REPL中讀取main.py檔案的內容
7.7.3在檔案系統中創建並寫入檔案
7.7.4使用uos類模組查看和刪除檔案系統中的檔案
7.8本章小結
第8章啟用浮點和數學計算模組
8.1一些嘗試
8.2啟用浮點數和math數學計算模組
8.2.1在mpconfigport.h檔案中添加配置宏
8.2.2在Makefile中補充math函式的實現代碼
8.3僅啟用浮點數但不啟用math數學計算模組
8.4啟用複數及cmath複數計算模組
8.5實驗
8.5.1支持新功能產生代碼量變化的統計
8.5.2使用math模組進行計算
8.5.3使用cmath模組進行計算
8.5.4實現FFT計算過程
8.6本章小結
第9章新建DAC類模組
9.1分析已有移植項目的範例實現
9.1.1print()方法
9.1.2write()方法
9.1.3make_new()方法與mdac_obj_t結構體
9.2設計新建DAC類模組
9.2.1一些新需求
9.2.2machine_dac_obj_t
9.2.3make_new()和init()
9.2.4write_u16()
9.2.5call()
9.2.6print()
9.2.7machine_dac_type
9.2.8向MicroPython中添加新建DAC類模組
9.3實驗
9.3.1使用DAC類模組在引腳上輸出模擬電壓
9.3.2使用DAC輸出正弦波形
9.4本章小結
第10章新建ADC類模組
10.1ADC類模組的套用模型
10.2ADC硬體外設模組
10.2.1關於ADC硬體轉換器的觸發機制
10.2.2考慮轉換佇列的情況
10.3新建ADC類模組
10.3.1machine_adc_obj_t
10.3.2make_new()
10.3.3init()
10.3.4read_u16()
10.3.5系統方法call()和print()
10.3.6創建machine_adc_type
10.3.7向MicroPython中集成ADC類模組
10.4實驗
10.4.1使用ADC類模組測量引腳電壓
10.4.2ADC與DAC的聯合實驗
10.5本章小結
第11章新建UART類模組
11.1分析stream框架
11.1.1mp_stream_p_t結構體類型
11.1.2stream對外提供的屬性方法
11.1.3stream內部的適配函式
11.2提取移植接口並實現移植
11.2.1適配硬體相關的函式
11.2.2基於中斷機制的收發過程
11.2.3輪詢傳送和中斷接收機制的接口函式
11.2.4其他必要的方法
11.2.5向MicroPython中集成UART類模組
11.3實驗
11.4本章小結
第12章新建SPI類模組
12.1啟用machine_spi框架
12.2在移植項目中啟用SoftSPI類模組
12.2.1softspi.c中的SPI匯流排驅動
12.2.2用於產生波特率的軟體延時函式
12.2.3完成移植需要具體平台實現的函式
12.2.4向machine類中添加SoftSPI類模組
12.3創建硬體SPI類模組
12.3.1machine_hw_spi_obj_t
12.3.2make_new()
12.3.3transfer()
12.3.4print()
12.3.5machine_hw_spi_type
12.3.6向machine類中添加硬體SPI類模組
12.4實驗
12.4.1顯示SPI信息
12.4.2使用SPI傳送過程輸出波形
12.4.3使用SPI讀入數據
12.4.4使用SPI類訪問W25Q64
12.5本章小結
第13章新建I2C類模組
13.1通用I2C類模組框架machine_i2c
13.2軟體I2C類模組SoftI2C
13.3硬體I2C類模組I2C
13.3.1transfer_single()
13.3.2machine_hw_i2c_type
13.3.3make_new()
13.3.4print()
13.3.5集成硬體I2C模組到machine模組中
13.4實驗
13.4.1PLUSF3270
13.4.2POKTKE18F
13.5本章小結
第14章新建PWM類模組
14.1參考範例
14.2創建硬體PWM模組
14.2.1machine_pwm_obj_t
14.2.2make_new()
14.2.3init()和deinit()
14.2.4freq()
14.2.5duty()
14.2.6print()
14.2.7向machine類中添加PWM類模組
14.3實驗
14.3.1使用PWM類模組輸出基本波形
14.3.2動態改變占空比
14.3.3動態改變頻率
14.4本章小結
第15章新建Timer類模組
15.1參考範例
15.2創建硬體定時器Timer類模組
15.2.1machine_timer_obj_t
15.2.2make_new()
15.2.3print()
15.2.4init()
15.2.5deinit()
15.2.6del()
15.2.7實現硬體定時器中斷服務
15.3實驗
15.3.1通過定時器中斷控制小燈閃爍
15.3.2周期性採集ADC信號
15.4本章小結
第16章使用mem類方法
16.1mem類方法的使用
16.2探究數組方法的實現
16.3一些Python驅動外設的用例
16.3.1訪問微控制器的設備唯一編號
16.3.2使用COMP外設模組
16.3.3使用靈活高精度PWM
16.4本章小結
第17章使用Thonny IDE開發MicroPython
17.1Thonny簡介
17.2改寫MicroPython代碼適配Thonny
17.3在Thonny中調試MicroPython
17.3.1在Shell中執行Python腳本
17.3.2在代碼編輯區編寫代碼並運行
17.4實現下載模式和調試模式
17.5本章小結
附錄A圖索引
後記