1. 摘要
本文檔主要介紹,在python環(huán)境下,如何開發(fā)嵌入式應(yīng)用程序,以STM32H43板卡為例介紹. 從系統(tǒng)環(huán)境搭建,到編譯,到用python實(shí)現(xiàn)硬件控制??勺鳛槿腴T教程。
2. 準(zhǔn)備工作
2.1 開發(fā)環(huán)境搭建
2.1.1 Win10自帶linux系統(tǒng)
開發(fā)環(huán)境可以自己使用虛擬機(jī)然后安裝ubuntu系統(tǒng),而Win10系統(tǒng)自帶有l(wèi)inux系統(tǒng),只需要使能就可以使用,比較方便,所以我們以win10自帶的linux子系統(tǒng)為例。
在控制面板中啟用linux子系統(tǒng),點(diǎn)擊啟用或關(guān)閉Windows功能。
如下圖勾選適用于linux的windows子系統(tǒng),然后重啟電腦
點(diǎn)擊立即重新啟動(dòng)
重啟后進(jìn)入windows 10 應(yīng)用商店,搜索Ubuntu,可以選擇18.04或者20.02進(jìn)行安裝
下載安裝完畢,點(diǎn)擊啟動(dòng)
設(shè)置用戶名和密碼,
安裝的默認(rèn)路徑是
C:Usershpp19AppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalState ootfshome
路徑不能修改,至此linux環(huán)境就好了,可以輸入一些常用命令看看,如ls,cp, rm等命令。
Win10地下安裝的linux子系統(tǒng)只支持命令行, 沒有自己用虛擬機(jī)安裝的功能全面,但是對(duì)于開發(fā)micropython 足夠。
2.1.2 虛擬機(jī)安裝
如果不想用windows10 安裝的,想自己搭建也是可以,需要安裝虛擬機(jī)和下載ubunut的iso鏡像文件,進(jìn)行安裝,這種安裝網(wǎng)上很多,我們就不詳細(xì)列出了,推薦第一種安裝。
2.1.3 依賴軟件安裝
Git安裝,git用來獲取軟件包
使用克隆micropython的軟件包,也可以去官網(wǎng)自己下載,拷貝到linux環(huán)境的home目錄下。
使用git 克隆軟件包
如果網(wǎng)絡(luò)不好,要等一段時(shí)間,比較慢。也可以自己到官網(wǎng)下載,我已經(jīng)下好,大家可以找我索取當(dāng)前最新板micropython-1.13
http://www.micropython.org/download/
2.1.4 Micropython 目錄結(jié)構(gòu)
目錄結(jié)構(gòu)比較重要,只有清除目錄結(jié)構(gòu)了,你才能移植到不同的板卡。
詳細(xì)的目錄結(jié)構(gòu)介紹可以參考README.md
主要關(guān)注下目前micropython支持的ST開發(fā)板,和我們關(guān)系比較大的是H7系列,可以看到目前支持很多的ST芯片。
3. 交叉編譯工具鏈
在終端輸入sudo apt install gcc make 命令安裝 gcc, make
安裝完后可以查看下版本
輸入 sudo apt-get install gcc-arm-none-eabi 安裝針對(duì)ARM的編譯器
如果你的交叉工具鏈安裝下載比較慢的話,請(qǐng)按以下步驟修改,因?yàn)閘inux自帶的軟件源地址都是國(guó)外的,國(guó)內(nèi)更新下載安裝的話會(huì)比較慢,需要將列表更新為國(guó)內(nèi)
將打開的文件內(nèi)容全部刪除掉,替換為以下鏡像源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
修改完軟件源后,更新軟件列表和軟件:
sudo apt update
sudo apt upgrade
如果對(duì)vim編輯器命令不熟悉,可以自己百度,或者直接在以下目錄
C:Usershpp19AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalState ootfsetcapt 下將sources.list文件替換為以下阿里云鏡像源,這樣速度會(huì)很快。
編譯mpy-cross, mpy-cross是一個(gè)micropython的輔助工具,在編譯過程中會(huì)用到,在micropython的源碼根目錄中輸入命令make -C mpy-cross
至此交叉編譯工具鏈就安裝完畢,可以編譯STM32的程序了。
4. 編譯程序
在源碼根目錄下輸入命令make -C ports/stm32 如果不指定BOARD,則默認(rèn)編譯的是ports/stm32下的PYBV10板子,而我們需要的是能在H743上跑,所以需要裁剪移植一個(gè)對(duì)H743的板子,查看下可以看到micropython目前支持的STM32板卡有F091, F401,F429,F446,F(xiàn)746,H743等,
復(fù)制NUCLEO_H743ZI命名為BODEBOARD
輸入命令ls查看下已經(jīng)有BODEBOARD文件夾和文件,進(jìn)入查看下
主要有5個(gè)文件,而我們就需要修改這里面的文件
首先修改時(shí)鐘為25000000,主要是修改stm32h7xx_hal_conf.h文件
修改mpconfigboard.h
將時(shí)鐘修改為如下配置,可以復(fù)制我們之前IAR工程下的時(shí)鐘配置。
修改其他管腳,這一節(jié)我們只以修改三個(gè)LED和UART1等管腳為例,在文檔的下一個(gè)版本更新中,會(huì)更新所有用到的硬件管腳,還是在這個(gè)文件中繼續(xù)修改對(duì)應(yīng)的硬件管腳
保存退出
修改pins.csv文件
添加LED和UART1的管腳
保存退出。
因?yàn)槲覀兪菂⒄盏腘UCLEO_H743ZI,所以mpconfigboard.mk文件不用修改。至此修改完畢,可以編譯,在micropython根目錄下輸入命令 make -C ports/stm32 BOARD=BODEBOARD
等待編譯完成。
可以看到生成了.hex和.dfu固件,任選一種下載入H743板子,這樣板卡里就有了python解析器,可以識(shí)別python語言
編譯好的固件怎么樣復(fù)制到windows主機(jī)呢,當(dāng)然你可以直接去生成的目錄底下拷貝,在win10 的linux子系統(tǒng)中默認(rèn)已經(jīng)將windows分區(qū)掛載好了,我們可以在/mnt目錄下看到
這樣我們就可以直接使用命令cp拷貝到windows了,當(dāng)然如果你不習(xí)慣命令行操作,可以安裝midinight commander 軟件,可以方便的管理文件,輸入命令sudo apt install mc 進(jìn)行安裝,安裝完后,輸入mc可以直接打開軟件。
不管用那種方法,將Hex文件下載到硬件板卡,下載完畢后,給板子重新上電,可以看到出現(xiàn)一個(gè)PYBFLASH類似U盤的盤符,打開里面有boot.py
main.py 等四個(gè)文件,我們最后的應(yīng)用程序直接寫在main.py就可以運(yùn)行了。
5. 測(cè)試
我們先來演示使用putty來控制板子上的LED燈,打開putty,配置波特率和串口號(hào),
導(dǎo)入LED庫,就可以控制LED了
可以觀察H743的板子三個(gè)LED燈依次點(diǎn)亮,通過Putty可以控制硬件就完成了,那么如何讓板子上電就三個(gè)LED燈點(diǎn)亮,而不需要通過Putty控制呢。?
這就要編輯我們前面提到的main.py文件,使用任何文本編輯器打開,寫入python代碼,保存退出,就可以運(yùn)行了。
通過以上代碼就實(shí)現(xiàn)了LED的點(diǎn)亮控制,實(shí)現(xiàn)用python控制單片機(jī)。至此就可以用python編寫很多好玩的東西在單片機(jī)上跑了。
6. 參考文檔
序號(hào) | 文獻(xiàn) |
1 | www.micropython.org |
責(zé)任編輯:xj
原文標(biāo)題:嘗嘗MicroPython控制單片機(jī)
文章出處:【微信公眾號(hào):嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
單片機(jī)
+關(guān)注
關(guān)注
6032文章
44517瀏覽量
633058 -
STM32
+關(guān)注
關(guān)注
2266文章
10872瀏覽量
354826 -
Micropython
+關(guān)注
關(guān)注
0文章
68瀏覽量
4718
原文標(biāo)題:嘗嘗MicroPython控制單片機(jī)
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論