《DNK210使用指南 -CanMV版 V1.0》第十六章 machine模塊實驗

来源:https://www.cnblogs.com/zdyz/p/18336656
-Advertisement-
Play Games

第十六章 machine模塊實驗 1)實驗平臺:正點原子DNK210開發板 2)章節摘自【正點原子】DNK210使用指南 - CanMV版 V1.0 3)購買鏈接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套實驗源碼+手冊+視頻下載地 ...


第十六章 machine模塊實驗

1)實驗平臺:正點原子DNK210開發板

2)章節摘自【正點原子】DNK210使用指南 - CanMV版 V1.0

3)購買鏈接:https://detail.tmall.com/item.htm?&id=782801398750

4)全套實驗源碼+手冊+視頻下載地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html

5)正點原子官方B站:https://space.bilibili.com/394620890

6)正點原子K210技術交流企鵝群:605557868

本章實驗將介紹machine模塊的基礎知識,以及machine模塊內部分函數的使用。通過本章的學習,讀者將學習到machine模塊的基本使用方法。
本章分為如下幾個小節:
16.1 machine模塊介紹
16.2 硬體設計
16.3 程式設計
16.4 運行驗證

16.1 machine模塊介紹
machine模塊是CanMV內置的模塊,machine模塊包含了與Kendryte K210硬體相關的特定功能,machine模塊中的大部分功能允許實現對Kendryte K210上硬體(例如CPU、UART、Timer等)的直接且不受限制的訪問和控制,因此能夠幫助開發者快速地實驗一些硬體功能。

machine模塊提供了3個函數和7個類,machine模塊提供的函數,如下表所示:

表16.1.1 machine模塊提供的函數

machine模塊提供的類,如下表所示:

表16.1.2 machine模塊提供的類

本章著重介紹machine模塊提供的函數,在後續章節將陸續對machine模塊提供的部分類進行介紹。

machine模塊提供了unique_id()函數,用於獲取Kendryte K210的32位元組唯一ID,unique_id()函數如下所示:

machine.unique_id()

unique_id()函數用於獲取Kendryte K210的32位元組唯一ID,32位元組唯一 ID可以被作為每顆Kendryte K210晶元的“身份證”。

unique_id()函數的使用示例如下所示:

import machine

uid = machine.unique.id()

machine模塊提供了reset()函數,用於對Kednryte K210進行軟體複位,reset()函數如下所示:

machine.reset()

reset()函數用於對Kendryte K210進行軟體複位,相當於對板卡進行重啟操作。

reset()函數的使用示例如下所示:

import machine

machine.reset()

machine模塊提供了reset_cause()函數,用於獲取Kendryte K210的複位原因,reset_cause()函數如下所示:

machine.reset_cause()

reset_cause()函數可以獲取Kendryte K210本次運行前複位的複位原因,其中複位原因如下表所示:

表16.1.3 複位原因描述表

reset_cause()函數的使用示例如下所示:

import machine

cause = machine.reset_cause()

16.2 硬體設計

16.2.1 常式功能

1.使用unique_id()函數,獲取Kendryte K210的唯一ID,並列印輸出

2.使用reset_cause()函數,獲取Kendryte K210本次運行的複位原因,並列印輸出

3.使用reset()函數,對Kendryte K210進行軟體複位

16.2.2 硬體資源

本章實驗內容,主要講解machine模塊中函數的使用,無需關註硬體資源。

16.2.3 原理圖

本章實驗內容,主要講解machine模塊中函數的使用,無需關註原理圖。

16.3 程式設計

16.3.1 machine函數

有關machine函數的介紹,請見第16.1小節《machine模塊介紹》。

16.3.2 程式流程圖

圖16.3.2.1 machine模塊實驗流程圖

16.3.3 main.py代碼

main.py中的腳本代碼如下所示:

import machine
import time

# 獲取唯一ID並列印輸出
uid = machine.unique_id()
print(uid)
print("".join(["%02X" % byte for byte in uid]))

# 獲取複位原因並列印輸出
cause = machine.reset_cause()
def decode_cause(cause):
    if cause == (machine.PWRON_RESET or machine.HARD_RESET):
        return "Pin reset"
    elif cause == machine.WDT_RESET:
        return "WDT0 reset"
    elif cause == machine.WDT1_RESET:
        return "WDT1 reset"
    elif cause == machine.SOFT_RESET:
        return "Software reset"
    else:
        return "Unknow"
print(decode_cause(cause))

# 延時一段時間
time.sleep_ms(500)

# 軟體複位
machine.reset()

可以看到,首先是通過machine.unique_id()函數獲取Kendryte K210的唯一ID,並通過print()函數將其列印輸出,但由於該函數返回的是bytes類型的數據,為了方便查看,同時將其格式化為十六進位數據進行列印輸出。

接著是使用machine.reset_cause()函數獲取複位原因,該函數返回的是一個int類型的數據,複位原因對應的int數據都以常量的形式保存在machine模塊中如表16.1.3,在將複位原因轉換為對應的字元串後,通過print()函數將其列印輸出。

在最後是使用machine.reset()函數對Kendryte K210進行軟體複位,複位後Kendryte K210將重新啟動,CanMV也將重新運行。

16.4 運行驗證
將DNK210開發板連接CanMV IDE,並點擊CanMV IDE上的“開始(運行腳本)”按鈕後,可以看到“串列終端”輸出了一些信息,如下圖所示:

圖16.4.1 “串列終端”視窗列印輸出

從“串列終端”的視窗中可以看到,前兩行輸出的是Kendryte K210的唯一ID,值得一提的是,雖然列印輸出了64位元組的唯一ID,但有效的只有前32位元組。可以看到第三行,輸出的是“Pin reset”,說明本次運行前的複位原因是“引腳複位”。

由於在main.py中的最後執行了machine.reset()函數,因此Kendryte K210將會執行一次複位,因此,通過CanMV IDE軟體能觀察到在執行完main.py後,原本處於“已連接”狀態的Kendryte K210設備變為了“未連接”狀態,如下圖所示:


圖16.4.2 設備斷開連接


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這篇博客文章詳細介紹瞭如何在Windows和Ubuntu平臺上安裝和配置Syncthing文件同步工具。文章提供了從官方下載Syncthing的方法,並指導如何在Windows上解壓並啟動Syncthing服務,以及如何在Ubuntu上使用Xshell和Xftp上傳Syncthing文件,並通過命令... ...
  • 本文指出在工作中運用 Windows 遠程桌面工具時,因安全與隱私因素,有時需刪除連接的歷史記錄和憑據。文中給出了一個相關的 PowerShell 腳本,還說明瞭其使用方法,涵蓋運行 PowerShell 的條件、CredentialManager 模塊的安裝、腳本的執行流程及輸入選擇等,同時提到了... ...
  • 1、背景描述 如上圖所示,根路徑“/”所在的文件系統已沒有可用的磁碟空間,需要擴容磁碟。 df -h 2、VirtualBox操作 2.1、查看當前虛擬磁碟的大小 如上圖所示,點擊打開選中的虛擬機的 Settings 界面。 如上圖所示,當前虛擬機的虛擬磁碟大小為 8GB 。 2.2、修改虛擬磁碟的 ...
  • 本文詳細介紹了在 CentOS 和 Ubuntu 系統上安裝 Nginx 的全過程,包括下載方法、安裝步驟、配置開機自啟以及基礎配置等重要內容,還提供了常見問題的解決方案和優化配置示例,助您順利搭建高效的伺服器環境。 ...
  • 眾所周知,WSL 2 為 Windows 用戶提供了一個強大、高效且靈活的 Linux 環境,特別適合開發者使用。它結合了 Windows 和 Linux 的優點,為用戶提供了更加全面和高效的工作環境。但缺點也很明顯,那就是預設安裝在本來空間就不富裕的C盤。 本次我們在非C盤的盤符快速安裝... ...
  • Keepalived是Linux下一個輕量級別的高可用解決方案。高可用:廣義來講,是指整個系統的高可用行;狹義的來講就是主機的冗餘和接管。 ...
  • 1、OrthoFinder 教程:用於比較基因組學的系統發育直系學推斷 1.1 orthofinder介紹 OrthoFinder是一種快速、準確和全面的比較基因組學分析工具。它可以找到直系和正群,為所有的正群推斷基因樹,併為所分析的物種推斷一個有根的物種樹。OrthoFinder還為比較基因組分析 ...
  • 寫在前面 本隨筆是非常菜的菜雞寫的。如有問題請及時提出。 可以聯繫:[email protected] GitHhub:https://github.com/WindDevil (目前啥也沒有 編程題 實現一個裸機應用程式A,能列印調用棧 首先在這裡卡了我很久的是調用棧保存在哪裡,回想到上一部分畫的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...