久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何在LiteOS中移植傳感器

152次閱讀
沒有評論

共計 1798 個字符,預計需要花費 5 分鐘才能閱讀完成。

今天就跟大家聊聊有關(guān)如何在 LiteOS 中移植傳感器,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

1 hello world

相信大家無論在學習編程語言開始的第一個函數(shù)應(yīng)該是 HelloWorld,丸趣 TV 小編將從 hello_world_demo 為大家介紹如何實現(xiàn)傳感器的移植工作。

首先我們創(chuàng)建 HelloWorld 工程,選擇 STM32_BearPi → hello_world_demo,工程名稱可以自定義。

創(chuàng)建之后我們點擊編譯,然后燒錄到開發(fā)板,打開 VSCode-IoTLink 的串口,并按照圖中進行設(shè)置串口連接參數(shù),之后按鍵 Reset,可以看到串口打印如下圖所示。

首先來介紹一下代碼運行的簡單流程,之前在漫談 LiteOS 系列中介紹過 LiteOS 的啟動流程,我們知道在程序下載到開發(fā)板之后,首先會按一下 Reset 按鍵進行開發(fā)板的啟動,因此在開發(fā)板上電之后執(zhí)行的第一個函數(shù)就是 ReSet_Handler 函數(shù)。

首先找到對應(yīng)的啟動文件 los_startup.S 文件(根據(jù)使用的操作系統(tǒng)以及板子 MCU 系列查找文件目錄),可以看到其由匯編語言編寫,具體啟動流程在漫談 LiteOS 系列中已經(jīng)介紹過,這里只看低 91 行,運行到 main 函數(shù),接下來程序?qū)?main 函數(shù)開始執(zhí)行。

接下來看 main 函數(shù),在 main 函數(shù)中,從硬件初始化到內(nèi)核初始化,之后初始化串口,再到 link_test() 函數(shù),在該函數(shù)中創(chuàng)建了一個任務(wù),其入口函數(shù)為 Link_main 函數(shù)。

在 Link_main 函數(shù)的最后調(diào)用了一個函數(shù)為 standard_app_demo_main(),根據(jù) IDE 查找我們可以看到,在項目中存在大量的該同名函數(shù),那么編譯器如何知道具體執(zhí)行的是哪一個呢,可以看到.config 文件中的 user_demo 宏定義使能的是 hello_world_demo, 因此執(zhí)行的是 hello_world_demo 中的 standard_app_demo_main() 函數(shù),從而根據(jù)其內(nèi)部創(chuàng)建的任務(wù)以及入口函數(shù)實現(xiàn)了打印 Hello World! This is BearPi!。接下來我們進行傳感器的移植。

2 傳感器移植

首先我們可以看到在該 LiteOS 代碼中已經(jīng)包含了大量的傳感器代碼,這里以 E53_SC1 為例,當然這些傳感器已經(jīng)和 BearPi 開發(fā)板已經(jīng)適配好,如果您想使用自己特定的傳感器,可以首先將傳感器與開發(fā)板進行一定的移植,包括引腳以及 GPIO 的綁定等等。

首先需要將傳感器文件路徑添加到編譯路徑中,以使得編譯器可以找到該代碼,在 userdemo.mk 中配置傳感器文件的相關(guān)路徑,在該文件中找到 hello_world_demo 部分添加文件路徑。具體如下圖 83-84 行,接著在源文件和頭文件變量中添加自定義的變量,user_sensor_src 和 user_hardware_inc,當然這里如果您直接定義名稱為編譯路徑中已經(jīng)存在的 user_hardware_src 和 user_hardware_inc,則無需添加相關(guān)代碼。

首先我們需要添加傳感器頭文件到 helloworld_demo.c 中,以實現(xiàn)后面的相關(guān)函數(shù)調(diào)用。

#include  E53_SC1.h

之后調(diào)用結(jié)構(gòu)體,以便后續(xù)打印數(shù)據(jù)。

E53_SC1_Data_TypeDef E53_SC1_Data;

然后在 hello_world_demo.c 文件中,添加傳感器數(shù)據(jù)的任務(wù)函數(shù)。

static int app_sensor_entry()
 Init_E53_SC1();
 while (1)
 { E53_SC1_Read_Data();
 printf(luminance:%d\n , (int)E53_SC1_Data.Lux);
 osal_task_sleep(2*1000);
 }
 return 0;
 
}

在主函數(shù)中創(chuàng)建傳感器任務(wù)函數(shù)。

osal_task_create(app_sensor_entry , app_sensor_entry, NULL, 0x400,NULL,2);
osal_task_sleep(2*1000);

具體如下圖

之后我們編譯燒錄,通過串口驗證一下傳感器的移植是否正確。

看完上述內(nèi)容,你們對如何在 LiteOS 中移植傳感器有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計1798字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 循化| 成安县| 尖扎县| 肥城市| 宝鸡市| 壤塘县| 治多县| 镇巴县| 阿勒泰市| 白城市| 根河市| 金秀| 日土县| 武隆县| 柳河县| 鄯善县| 富顺县| 延庆县| 曲松县| 河南省| 顺义区| 大新县| 阳谷县| 皮山县| 健康| 应城市| 北海市| 灵石县| 错那县| 皮山县| 卓尼县| 抚州市| 驻马店市| 旅游| 介休市| 香格里拉县| 吉隆县| 枣阳市| 北票市| 涞水县| 梁山县|