




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
?NXROBO2023星火派套件使用課程說明編寫第一個程序線程的使用IO與串口SPI控制燈板?NXROBO20232編寫第一個程序?NXROBO20233連接OpenHarmony開發(fā)板?NXROBO20234采用VisualStudioCode添加遠程計算機,遠程連接訪問編寫業(yè)務(wù)源碼文件helloworld.c?NXROBO202351)打開開發(fā)目錄spark_hm_pi/example該文件夾用于存放業(yè)務(wù)源代碼,路徑位于/home/spark/openharmony/openharmony3.1.6/device/board/nxrobo/spark_hm_pi/example編寫業(yè)務(wù)源碼文件helloworld.c?NXROBO202362)新建源碼文件夾右鍵點擊example,新建文件夾(用于存源碼和gn文件)如創(chuàng)建新文件夾名01_helloworld(文件名自定義),新增helloworld.c(文件名可自定義)和BUILD.gn(文件名不可變)文件,其中helloworld.c為業(yè)務(wù)代碼,BUILD.gn為編譯腳本。編寫業(yè)務(wù)源碼文件helloworld.c?NXROBO20237代碼段如下所示:編寫業(yè)務(wù)編譯構(gòu)建文件BUILD.gn?NXROBO20238代碼段如下所示:編寫業(yè)務(wù)編譯構(gòu)建文件BUILD.gn?NXROBO20239該代碼用于構(gòu)建一個名為"helloworld"的靜態(tài)庫,其中包含了"helloworld.c"源文件,并且指定了需要包含的頭文件目錄"http://utils/native/lite/include"。靜態(tài)庫的具體構(gòu)建過程可能需要根據(jù)具體的構(gòu)建系統(tǒng)和工具進行配置和操作。編寫模塊編譯構(gòu)建文件BUILD.gn?NXROBO202310剛剛編寫的業(yè)務(wù)編譯構(gòu)建文件BUILD.gn位于/spark_hm_pi/example/01_helloworld/BUILD.gn路徑中?,F(xiàn)在編寫的模塊編譯構(gòu)建文件BUILD.gn位于/spark_hm_pi/example/BUILD.gn路徑中。編寫模塊編譯構(gòu)建文件BUILD.gn?NXROBO202311業(yè)務(wù)編譯構(gòu)建文件BUILD.gn與模塊編譯構(gòu)建文件BUILD.gn的區(qū)別如下:編寫模塊編譯構(gòu)建文件BUILD.gn?NXROBO202312代碼段如下所示:編譯?NXROBO202313若是在VisualStudioCode環(huán)境下,可以使用以下方式進行編譯。點擊界面右下角的“+”新增終端確保在路徑~/openharmony/openharmony3.1.6下,輸入以下命令進行編譯即可:hbbuild-f編譯?NXROBO202314燒錄所需的具體文件位于/home/spark/openharmony/openharmony3.1.6/out/spark_hm_pi/spark_hm_pi文件夾中。Hi3861_wifiiot_app_allinone.bin文件即為燒錄所需文件。燒錄&調(diào)試?NXROBO202315燒錄過程詳細查看《星火派SPARK-HM-PI程序燒錄說明》文檔;關(guān)于如何在window上打開工程文件詳看《將SPARK-HM-PI映射到window網(wǎng)絡(luò)驅(qū)動盤》。燒錄成功后,使用USB-typeC線將電腦與開發(fā)板的調(diào)試/燒錄口連接,借助串口助手工具進行信息打印。連接方式如下圖:燒錄&調(diào)試?NXROBO202316打開串口助手sscom5.13.1,如下圖所示:點擊左下角“打開串口”:燒錄&調(diào)試?NXROBO202317然后點擊開發(fā)板上的“RESET”按鍵,即可看到發(fā)送到串口的信息,如下圖所示:線程的使用?NXROBO202318線程的使用?NXROBO202319線程介紹?NXROBO202320線程是操作系統(tǒng)中能夠獨立運行的最小單位,它可以在同一個進程內(nèi)同時執(zhí)行多個程序段,從而提高程序的并發(fā)性和效率。線程在多任務(wù)處理中有廣泛的應(yīng)用,可以用于處理復(fù)雜的計算、網(wǎng)絡(luò)通信、圖形界面等任務(wù)。線程線程是進程中的執(zhí)行單元,一個進程可以包含多個線程。線程共享進程的內(nèi)存空間和資源,每個線程有自己的程序計數(shù)器、寄存器和棧。多個線程可以同時執(zhí)行不同的任務(wù),共享進程的上下文信息,因此線程之間的切換開銷相對較小。進程進程是正在運行的程序的實例。它是操作系統(tǒng)資源分配和調(diào)度的基本單位,擁有獨立的內(nèi)存空間、文件描述符、句柄等系統(tǒng)資源。進程之間相互隔離,每個進程有自己的地址空間和獨立的執(zhí)行環(huán)境,它們通過進程間通信(IPC)的方式進行數(shù)據(jù)交互。線程初始化?NXROBO202321線程相關(guān)接口可以在路徑:openharmony/openharmony3.1.6/kernel/liteos_m/kal/cmsis/cmsis_os2.h下查看,路徑有可能不固定,請同學(xué)檢查自己的cmsis_os2.h文件位置。該文件中最重要的一個是創(chuàng)建線程接口線程初始化?NXROBO202322osThreadAttr_t結(jié)構(gòu)體成員介紹成員變量
Name描述name線程名稱。attr_bits線程屬性位。cb_mem用戶指定的控制塊指針。cb_size用戶指定的控制塊大小,單位:字節(jié)。stack_mem用戶指定的線程棧指針。stack_size線程棧大小,單位:字節(jié)。priority線程優(yōu)先級。tz_module線程安全配置。reserved線程保留參數(shù)。編寫線程業(yè)務(wù)代碼hello_task.c?NXROBO202323在example目錄下,新建01hello_task(名字自定義)目錄在01hello_task目錄下,新建hello_task.c(業(yè)務(wù)代碼文件,文件名自定義),BUILD.gn(業(yè)務(wù)編譯構(gòu)建文件,將業(yè)務(wù)代碼構(gòu)建成靜態(tài)庫,文件名固定)編寫線程業(yè)務(wù)代碼hello_task.c?NXROBO202324修改hello_task.c,在上個HelloWorld的基礎(chǔ)上,嘗試修改源碼,加入線程,實現(xiàn)每秒打印一次Helloworld,每兩秒打印一次HelloOpenHarmony。編寫線程業(yè)務(wù)代碼hello_task.c?NXROBO202325編寫業(yè)務(wù)編譯構(gòu)建文件BUILD.gn?NXROBO202326關(guān)于創(chuàng)建01hello_task目錄下的業(yè)務(wù)編譯構(gòu)建文件BUILD.gn,直接復(fù)制之前01_helloworld中的BUILD.gn即可,并且在include_dir(頭文件路徑)下面添加一行"http://kernel/liteos_m/kal/cmsis",因為使用了cmsis_os2.h,所以要在BUILD.gn中添加對應(yīng)的頭文件所在路徑(此處注意需要與自身系統(tǒng)中的cmsis_os2.h文件位置相同)。編寫模塊編譯構(gòu)建文件?NXROBO202327在example目錄下的BUILD.gn文件內(nèi)容中填入“01hello_task:hello_task”,編譯&燒錄&調(diào)試?NXROBO202328具體過程參照《鴻蒙開發(fā)板開發(fā)環(huán)境操作手冊》與《星火派SPARK-HM-PI程序燒錄說明》打開串口調(diào)試助手,即可出現(xiàn)以下信息:IO與串口?NXROBO202329IO使用介紹?NXROBO202330IO(輸入輸出)是指嵌入式設(shè)備與外部環(huán)境進行數(shù)據(jù)交互的接口。它包括數(shù)字io和模擬io兩種類型。數(shù)字io數(shù)字io使用二進制編碼表示狀態(tài),例如0代表低電平(off),1代表高電平(on)。常見的數(shù)字io設(shè)備包括led燈、按鍵開關(guān)、繼電器等。數(shù)字io接口通常使用gpio(通用輸入/輸出)接口控制。模擬io模擬io通過模擬信號來傳輸數(shù)據(jù),例如音頻信號、溫度傳感器測量值等。模擬信號可以是連續(xù)的,因此使用模擬信號需要進行采樣和量化。常見的模擬io設(shè)備包括攝像頭、麥克風(fēng)、溫度傳感器等。模擬io接口通常使用adc(模數(shù)轉(zhuǎn)換器)或dac(數(shù)字模擬轉(zhuǎn)換器)接口進行讀取或輸出。相關(guān)API?NXROBO202331IO復(fù)用?NXROBO202332星火派開發(fā)板的引腳資源有限,有很多的內(nèi)置外設(shè),這些外設(shè)的外部引腳都是與GPIO復(fù)用的。也就是說,一個GPIO如果可以復(fù)用為內(nèi)置外設(shè)的功能引腳,那么當這個GPIO作為內(nèi)置外設(shè)使用的時候,就叫做復(fù)用。可以根據(jù)數(shù)據(jù)手冊查看IO引腳可復(fù)用的功能。串口介紹?NXROBO202333通用異步收發(fā)傳輸器(UniversalAsynchronousReceiver/Transmitter,通常稱作UART)是一種串行異步收發(fā)協(xié)議,應(yīng)用十分廣泛。UART工作原理是將數(shù)據(jù)的二進制位一位一位的進行傳輸。。當然兩個設(shè)備使用UART串口通訊時,必須先約定好傳輸速率和一些數(shù)據(jù)位。串口相關(guān)API?NXROBO202334串口相關(guān)API?NXROBO202335示例?NXROBO202336查閱原理圖可知,拓展燈板上有一個USB轉(zhuǎn)串口的芯片(連接到UART1),可以通過type—c數(shù)據(jù)線連接,該接口與電腦進行串口通信,通過串口工具進行調(diào)試。下面將實現(xiàn)串口接收數(shù)據(jù)與發(fā)送數(shù)據(jù)實驗。編寫串口業(yè)務(wù)代碼uart_ex_demo.c?NXROBO202337接著在05_uart_ex目錄下新建uart_ex_demo.c文件,并且寫入以下內(nèi)容,更多詳細代碼查看實訓(xùn)指南編寫業(yè)務(wù)編譯構(gòu)建文件BUILD.gn?NXROBO202338在05_uart_ex新建BUILD.gn(文件名不要自定義)文件,寫入以下內(nèi)容:編寫模塊編譯構(gòu)建文件BUILD.gn?NXROBO202339接著在example目錄下,在BUILD.gn文件寫入以下代碼:編譯&燒錄&調(diào)試?NXROBO202340具體過程參照《鴻蒙開發(fā)板開發(fā)環(huán)境操作手冊》與《星火派SPARK-HM-PI程序燒錄說明》打開串口調(diào)試助手,按下開發(fā)板reset,可以看到串口打印出"goodmorning"。接下來就可以通過串口往開發(fā)板發(fā)送任意數(shù)據(jù),開發(fā)板會將數(shù)據(jù)通過串口回傳,在即可出現(xiàn)以下信息:SPI控制燈板?NXROBO202341SPI介紹?NXROBO202342SPI(serialperipheralinterface,串行外設(shè)接口)是一種用于連接微控制器和外設(shè)的串行通信協(xié)議。SPI通信總線由四根線組成,分別是時鐘線(SCK)、數(shù)據(jù)輸入線(SDI)、數(shù)據(jù)輸出線(SDO)和從設(shè)備選擇線(CS)。SPI特點?NXROBO202343高速傳輸:spi是一種高速傳輸協(xié)議,可以實現(xiàn)高達幾百mhz的傳輸速率。全雙工通信:spi可以同時進行發(fā)送和接收,因此通信效率更高。硬件實現(xiàn):spi通信使用硬件邏輯實現(xiàn),不需要大量的軟件處理,因此更加高效。簡單靈活:spi接口簡單,易于實現(xiàn)和使用,并且支持多個從設(shè)備的并聯(lián)。相關(guān)API?NXROBO202344相關(guān)頭文件位置:device/soc/hisilicon/hi3861v100/sdk_liteos/include/hi_spi.hWS2812LED介紹?NXROBO202345WS2812的8x8燈板是一種由64個WS2812LED燈珠組成的點陣屏幕。每個WS2812LED燈珠都可以獨立控制顏色和亮度,因此可以在這種燈板上顯示彩色圖像和動畫。WS2812LED介紹?NXROBO202346WS2812LED燈珠使用一種特殊的通信協(xié)議,可以通過單個數(shù)據(jù)線連接多個燈珠。這意味著您只需要使用一個引腳來控制整個8x8燈板。要控制WS2812的8x8燈板,您需要使用單片機或微控制器來發(fā)送控制數(shù)據(jù),并使用相應(yīng)的庫函數(shù)來設(shè)置每個LED燈珠的顏色和亮度。相關(guān)API?NXROBO202347圖片取模介紹?NXROBO202348
圖片取模是指將一幅圖片轉(zhuǎn)換為點陣數(shù)據(jù)的過程。這通常用于將圖片顯示在點陣屏幕(如LED點陣屏幕或LCD字符顯示屏)上。
在圖片取模過程中,首先需要將圖片縮放到與目標點陣屏幕大小相匹配。然后,根據(jù)屏幕的顏色深度和顯示能力,將圖片的顏色數(shù)據(jù)轉(zhuǎn)換為點陣數(shù)據(jù)。例如,對于單色點陣屏幕,圖片的顏色數(shù)據(jù)需要轉(zhuǎn)換為黑白二值數(shù)據(jù)。
最后,根據(jù)屏幕控制器的要求,將點陣數(shù)據(jù)進行適當?shù)木幋a和排列。例如,對于橫向取模的控制器,需要將點陣數(shù)據(jù)按行排列;對于縱向取模的控制器,則需要將點陣數(shù)據(jù)按列排列。
圖片取模通常使用專門的取模軟件來完成,也可以通過編程實現(xiàn),具體可以網(wǎng)上搜索取模軟件。“SPARK“圖片取模?NXROBO202349
橫向取模和字節(jié)倒序是點陣字庫中常用的術(shù)語。
橫向取模是指在點陣字庫中,一個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年職稱英語考試模擬試卷及答案
- 2025年甘肅省隴南事業(yè)單位招聘啥時候發(fā)布筆試參考題庫及參考答案詳解
- 特殊學(xué)生周日管理制度
- 特殊工時安全管理制度
- 特殊旅客安全管理制度
- 特殊肥胖幼兒管理制度
- 獨立單位人員管理制度
- 豬場采血送檢管理制度
- 玩具公司倉庫管理制度
- 環(huán)保數(shù)據(jù)異常管理制度
- 直播間貨盤管理制度
- 2025年中國融通商業(yè)服務(wù)集團所屬單位招聘筆試沖刺題(帶答案解析)
- 三門峽市縣以下事業(yè)單位聯(lián)考招聘考試真題2024
- 2025年上半年山東鐵投集團校園招聘社會公開招聘165人筆試參考題庫附帶答案詳解
- 2025年甘肅農(nóng)墾集團招聘筆試參考題庫含答案解析
- 租房合同范本下載(可直接打印)
- MOOC 模擬電子技術(shù)基礎(chǔ)-華中科技大學(xué) 中國大學(xué)慕課答案
- 駕照體檢表完整版本
- YY∕T 1797-2021 內(nèi)窺鏡手術(shù)器械 腔鏡切割吻合器及組件
- 智慧停車技術(shù)方案
- 腸內(nèi)腸外營養(yǎng)制劑及特點
評論
0/150
提交評論