MicroPython內(nèi)核開發(fā)筆記——基于MM32F3微控制器
鏈接:https://pan.baidu.com/s/1RklzXrZyEQM6PRTAzkrS5Q?pwd=yhgg?
提取碼:yhgg

MicroPython本身使用GNUC進(jìn)行開發(fā),在微控制器上實(shí)現(xiàn)了Python 3的基本功能,擁有完備的解析器、編譯器、虛擬機(jī)和類庫等。在保留了Python語言主要特性的基礎(chǔ)上,MicroPython還對(duì)微控制器的底層進(jìn)行了封裝,將常用功能都封裝到庫中,甚至為一些常用的傳感器和硬件編寫了專門的驅(qū)動(dòng)。
全書共17章,在內(nèi)容上可分為3部分:搭建環(huán)境與基本方法(第1、2章)、移植和啟用核心功能(第3~7章)、設(shè)計(jì)實(shí)現(xiàn)更多模塊(第8~17章),并配備了豐富的樣例程序,用于驗(yàn)證MicroPython功能模塊可正常工作,并演示同這些模塊相關(guān)的典型編程方法。
《MicroPython內(nèi)核開發(fā)筆記——基于MM32F3微控制器(清華開發(fā)者書庫)》力求理論與實(shí)踐緊密結(jié)合,內(nèi)容翔實(shí),實(shí)例豐富,可操作性強(qiáng)。該書可作為高等院?!扒度胧较到y(tǒng)”相關(guān)課程的教材,也可供從事嵌入式系統(tǒng)開發(fā)與應(yīng)用的工程技術(shù)人員自學(xué),還可為電子愛好者使用嵌入式系統(tǒng)實(shí)現(xiàn)創(chuàng)意作品提供參考。
作者簡(jiǎn)介
蘇勇,現(xiàn)就職于上海靈動(dòng)微電子股份有限公司。曾就職于恩智浦半導(dǎo)體(飛思卡爾半導(dǎo)體并入),歷任嵌入式軟件工程師、高級(jí)系統(tǒng)應(yīng)用工程師、軟件與系統(tǒng)工程經(jīng)理。主要基于微控制器平臺(tái)進(jìn)行軟件開發(fā),擅長對(duì)IP外設(shè)建模并設(shè)計(jì)驅(qū)動(dòng),擅長嵌入式系統(tǒng)的軟件架構(gòu)設(shè)計(jì)及深度系統(tǒng)優(yōu)化,熟悉IOT和AI等技術(shù)領(lǐng)域的應(yīng)用及相關(guān)的產(chǎn)品開發(fā)。熟悉基于微控制器的大型軟件項(xiàng)目開發(fā)與管理。
卓晴,清華大學(xué)自動(dòng)化系副教授,主要研究領(lǐng)域包括智能信息處理、嵌入式系統(tǒng)和功率電子等。榮獲國家級(jí)教學(xué)成果獎(jiǎng)一等獎(jiǎng)、北京市教學(xué)成果獎(jiǎng)一等獎(jiǎng)等,講授課程包括“信號(hào)與系統(tǒng)”“人工神經(jīng)網(wǎng)絡(luò)”等。從2006年開始負(fù)責(zé)組織全國大學(xué)生智能車競(jìng)賽活動(dòng)至今。
第1章MicroPython: 用Python對(duì)微控制器編程
1.1緣起
1.1.1一切源自Python
1.1.2從桌面系統(tǒng)到微控制器
1.1.3從業(yè)余愛好到商業(yè)項(xiàng)目
1.1.4Python與STEM學(xué)科
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開發(fā)板
1.3.2ESP8266/ESP32開發(fā)板
1.3.3BBC Micro: Bit開發(fā)板
1.3.4Adafruit和支持CircuitPython的一些開發(fā)板
1.4MicroPython編程體驗(yàn)
1.4.1REPL
1.4.2命令行工具
1.4.3MicroPython集成開發(fā)環(huán)境
1.4.4編寫MicroPython代碼
1.5MicroPython應(yīng)用場(chǎng)景
1.5.1驗(yàn)證新產(chǎn)品原型設(shè)計(jì)
1.5.2驗(yàn)證硬件系統(tǒng)
1.5.3編程教育
1.6本章小結(jié)
第2章準(zhǔn)備MicroPython開發(fā)環(huán)境
2.1MicroPython源碼
2.1.1獲得MicroPython的源代碼
2.1.2MicroPython源碼文件結(jié)構(gòu)分析
2.2基于Windows操作系統(tǒng)搭建MicroPython編譯環(huán)境
2.2.1安裝msys2基礎(chǔ)軟件包
2.2.2在msys2中安裝make
2.2.3在msys2中安裝Python
2.2.4在msys2中安裝GCC工具鏈
2.2.5在msys2中導(dǎo)入armnoneeabigcc
2.2.6編譯minimal工程驗(yàn)證編譯工具鏈
2.3硬件平臺(tái)介紹
2.3.1MM32F3微控制器
2.3.2PLUSF3270開發(fā)板
2.3.3F3270最小系統(tǒng)實(shí)驗(yàn)板
2.3.4POKTKE18F開發(fā)板
2.3.5MindSDK軟件包
2.4本章小結(jié)
第3章移植MicroPython最小工程
3.1MicroPython的最小工程
3.1.1minimal項(xiàng)目目錄下的文件
3.1.2從Makefile追溯編譯過程
3.2基于MM32F3微控制器移植minimal工程
3.2.1在lib目錄中添加MindSDK代碼
3.2.2在ports目錄中創(chuàng)建mm32f3項(xiàng)目目錄
3.3首次在MM32F3微控制器上運(yùn)行MicroPython
3.3.1下載可執(zhí)行文件到MM32F3微控制器
3.3.2驗(yàn)證及演示程序
3.4本章小結(jié)
第4章MicroPython類模塊實(shí)現(xiàn)綜述
4.1基本的類模塊封裝模式
4.1.1新建類模塊的源文件
4.1.2編輯Makefile
4.1.3編譯運(yùn)行
4.2本章小結(jié)
第5章新建Pin類模塊
5.1新建硬件外設(shè)類模塊框架
5.2定義machine_pin_obj_t結(jié)構(gòu)
5.3在構(gòu)造函數(shù)中實(shí)現(xiàn)返回實(shí)例化對(duì)象
5.4在構(gòu)造函數(shù)中實(shí)現(xiàn)多種傳參方式指定實(shí)例化對(duì)象
5.5print()和call()
5.5.1print()方法
5.5.2call()方法
5.5.3其他基礎(chǔ)類屬性函數(shù)
5.6實(shí)驗(yàn)
5.6.1向引腳輸出電平控制小燈亮滅
5.6.2讀取引腳電平獲取按鍵值
5.7本章小結(jié)
第6章移植utime類模塊
6.1utime類模塊簡(jiǎn)介
6.2MicroPython自帶的utime類實(shí)現(xiàn)
6.3對(duì)接硬件定時(shí)器相關(guān)的函數(shù)實(shí)現(xiàn)
6.4在MicroPython中添加utime類模塊
6.5實(shí)驗(yàn)
6.6本章小結(jié)
第7章移植SD卡類模塊實(shí)現(xiàn)文件系統(tǒng)
7.1VFS文件系統(tǒng)調(diào)用關(guān)系解析
7.1.1vfs_blockdev系列函數(shù)
7.1.2VFS統(tǒng)一文件系統(tǒng)API
7.2從文件系統(tǒng)中執(zhí)行Python腳本文件解析
7.2.1mp_lexer_new_from_file()
7.2.2mp_import_stat()和mp_builtin_open()
7.3對(duì)接硬件SD卡驅(qū)動(dòng)程序
7.4新建SDCard類模塊
7.4.1make_new()
7.4.2read_blocks() & write_blocks()
7.4.3ioctl()
7.4.4創(chuàng)建SDCard類模塊的類型對(duì)象
7.4.5添加SDCard類
7.4.6更新Makefile
7.5調(diào)整MicroPython內(nèi)核支持文件系統(tǒng)
7.5.1改寫main()函數(shù)支持文件系統(tǒng)
7.5.2配置mpconfigport.h文件
7.6啟用uos類模塊
7.7實(shí)驗(yàn)
7.7.1運(yùn)行來自SD卡的main.py
7.7.2在REPL中讀取main.py文件的內(nèi)容
7.7.3在文件系統(tǒng)中創(chuàng)建并寫入文件
7.7.4使用uos類模塊查看和刪除文件系統(tǒng)中的文件
7.8本章小結(jié)
第8章啟用浮點(diǎn)和數(shù)學(xué)計(jì)算模塊
8.1一些嘗試
8.2啟用浮點(diǎn)數(shù)和math數(shù)學(xué)計(jì)算模塊
8.2.1在mpconfigport.h文件中添加配置宏
8.2.2在Makefile中補(bǔ)充math函數(shù)的實(shí)現(xiàn)代碼
8.3僅啟用浮點(diǎn)數(shù)但不啟用math數(shù)學(xué)計(jì)算模塊
8.4啟用復(fù)數(shù)及cmath復(fù)數(shù)計(jì)算模塊
8.5實(shí)驗(yàn)
8.5.1支持新功能產(chǎn)生代碼量變化的統(tǒng)計(jì)
8.5.2使用math模塊進(jìn)行計(jì)算
8.5.3使用cmath模塊進(jìn)行計(jì)算
8.5.4實(shí)現(xiàn)FFT計(jì)算過程
8.6本章小結(jié)
第9章新建DAC類模塊
9.1分析已有移植項(xiàng)目的范例實(shí)現(xiàn)
9.1.1print()方法
9.1.2write()方法
9.1.3make_new()方法與mdac_obj_t結(jié)構(gòu)體
9.2設(shè)計(jì)新建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實(shí)驗(yàn)
9.3.1使用DAC類模塊在引腳上輸出模擬電壓
9.3.2使用DAC輸出正弦波形
9.4本章小結(jié)
第10章新建ADC類模塊
10.1ADC類模塊的應(yīng)用模型
10.2ADC硬件外設(shè)模塊
10.2.1關(guān)于ADC硬件轉(zhuǎn)換器的觸發(fā)機(jī)制
10.2.2考慮轉(zhuǎn)換隊(duì)列的情況
10.3新建ADC類模塊
10.3.1machine_adc_obj_t
10.3.2make_new()
10.3.3init()
10.3.4read_u16()
10.3.5系統(tǒng)方法call()和print()
10.3.6創(chuàng)建machine_adc_type
10.3.7向MicroPython中集成ADC類模塊
10.4實(shí)驗(yàn)
10.4.1使用ADC類模塊測(cè)量引腳電壓
10.4.2ADC與DAC的聯(lián)合實(shí)驗(yàn)
10.5本章小結(jié)
第11章新建UART類模塊
11.1分析stream框架
11.1.1mp_stream_p_t結(jié)構(gòu)體類型
11.1.2stream對(duì)外提供的屬性方法
11.1.3stream內(nèi)部的適配函數(shù)
11.2提取移植接口并實(shí)現(xiàn)移植
11.2.1適配硬件相關(guān)的函數(shù)
11.2.2基于中斷機(jī)制的收發(fā)過程
11.2.3輪詢發(fā)送和中斷接收機(jī)制的接口函數(shù)
11.2.4其他必要的方法
11.2.5向MicroPython中集成UART類模塊
11.3實(shí)驗(yàn)
11.4本章小結(jié)
第12章新建SPI類模塊
12.1啟用machine_spi框架
12.2在移植項(xiàng)目中啟用SoftSPI類模塊
12.2.1softspi.c中的SPI總線驅(qū)動(dòng)
12.2.2用于產(chǎn)生波特率的軟件延時(shí)函數(shù)
12.2.3完成移植需要具體平臺(tái)實(shí)現(xiàn)的函數(shù)
12.2.4向machine類中添加SoftSPI類模塊
12.3創(chuàng)建硬件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實(shí)驗(yàn)
12.4.1顯示SPI信息
12.4.2使用SPI發(fā)送過程輸出波形
12.4.3使用SPI讀入數(shù)據(jù)
12.4.4使用SPI類訪問W25Q64
12.5本章小結(jié)
第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實(shí)驗(yàn)
13.4.1PLUSF3270
13.4.2POKTKE18F
13.5本章小結(jié)
第14章新建PWM類模塊
14.1參考范例
14.2創(chuàng)建硬件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實(shí)驗(yàn)
14.3.1使用PWM類模塊輸出基本波形
14.3.2動(dòng)態(tài)改變占空比
14.3.3動(dòng)態(tài)改變頻率
14.4本章小結(jié)
第15章新建Timer類模塊
15.1參考范例
15.2創(chuàng)建硬件定時(shí)器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實(shí)現(xiàn)硬件定時(shí)器中斷服務(wù)
15.3實(shí)驗(yàn)
15.3.1通過定時(shí)器中斷控制小燈閃爍
15.3.2周期性采集ADC信號(hào)
15.4本章小結(jié)
第16章使用mem類方法
16.1mem類方法的使用
16.2探究數(shù)組方法的實(shí)現(xiàn)
16.3一些Python驅(qū)動(dòng)外設(shè)的用例
16.3.1訪問微控制器的設(shè)備唯一編號(hào)
16.3.2使用COMP外設(shè)模塊
16.3.3使用靈活高精度PWM
16.4本章小結(jié)
第17章使用Thonny IDE開發(fā)MicroPython
17.1Thonny簡(jiǎn)介
17.2改寫MicroPython代碼適配Thonny
17.3在Thonny中調(diào)試MicroPython
17.3.1在Shell中執(zhí)行Python腳本
17.3.2在代碼編輯區(qū)編寫代碼并運(yùn)行
17.4實(shí)現(xiàn)下載模式和調(diào)試模式
17.5本章小結(jié)
附錄A圖索引
后記
查看全部↓