MicroPython 內核開發筆記 — 基於 MM32F3 微控制器
蘇勇,卓晴
買這商品的人也買了...
-
$384PyQt5 快速開發與實戰
-
$520$411 -
$390$371 -
$550$429 -
$594$564 -
$780$616 -
$454面向數據科學家的實用統計學
-
$403自己動手寫 Python 虛擬機
-
$672$638 -
$500Python + Kivy (App開發) 從入門到實踐
-
$600$468 -
$602嵌入式 C語言自我修養 — 從芯片、編譯器到操作系統
-
$354$336 -
$301MicroPython 開發與實戰
-
$680$537 -
$650$507 -
$650$507 -
$659$626 -
$650$507 -
$690$545 -
$704Istio最佳實戰
-
$509庖丁解牛 Linux 操作系統分析
-
$421TPM 2.0 安全算法開發示例實戰
-
$354$336 -
$780$515
相關主題
商品描述
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圖索引
後記