性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

STM32L431使用TencentOS tiny操作系統(tǒng)連接騰訊物聯(lián)網(wǎng)開發(fā)平臺

去年騰訊為了宣傳自己針對物聯(lián)網(wǎng)的開源操作系統(tǒng)TencentOS tiny,舉辦了一場試用活動,當(dāng)時(shí)幸運(yùn)獲得一塊,但是當(dāng)時(shí)公司任務(wù)較重,一直吃灰。

板子實(shí)物就這樣,沒啥好介紹的,都是基礎(chǔ)的外設(shè),如今閑來無事,再加上眾多大神完善了git庫,使開發(fā)變得容易,所以索性掏出來玩一下。這次主要實(shí)現(xiàn)以下幾個(gè)功能:在騰訊物聯(lián)網(wǎng)平臺創(chuàng)建項(xiàng)目和產(chǎn)品(此處為智能燈)通過平臺控制燈使用騰訊連連微信小程序控制燈

一.上手體驗(yàn)helloworld騰訊物聯(lián)網(wǎng)終端操作系統(tǒng) TencentOS tiny 簡介騰訊物聯(lián)網(wǎng)終端操作系統(tǒng)(TencentOS tiny)是騰訊面向物聯(lián)網(wǎng)領(lǐng)域開發(fā)的實(shí)時(shí)操作系統(tǒng),具有低功耗,低資源占用,模塊化,安全可靠等特點(diǎn),可有效提升物聯(lián)網(wǎng)終端產(chǎn)品開發(fā)效率。TencentOS tiny 提供精簡的 RTOS 內(nèi)核,內(nèi)核組件可裁剪可配置,可快速移植到多種主流 MCU 及模組芯片上。而且,基于RTOS內(nèi)核提供了豐富的物聯(lián)網(wǎng)組件,內(nèi)部集成主流物聯(lián)網(wǎng)協(xié)議棧(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物聯(lián)網(wǎng)終端設(shè)備及業(yè)務(wù)快速接入騰訊云物聯(lián)網(wǎng)平臺。這是來源于官網(wǎng)的介紹,到底好不好還得看使用,對于我們新手,直接從源碼開始,方便體驗(yàn)上手:TencentOS_ting源碼倉庫從倉庫拉取下來后文件夾目錄如下:

這里簡單介紹幾個(gè)主要的文件夾:board文件夾這個(gè)文件夾中包含了目前為止TencentOS tiny 適配的開發(fā)板合集,在測試學(xué)習(xí)的時(shí)候非常好用,基本上熱門的開發(fā)板均有適配。如果自己適配了新的開發(fā)板可以在開發(fā)完成后提交合并上去,為后續(xù)的開發(fā)者提供便利,到手即用。目前已適配很多。

該文件夾為TencentOS tiny支持的通信模組,包括了NB-IOT,wifi,2G,4G,lora。基本滿足開發(fā)需求,使用很方便。

components文件夾組件文件夾,包括上云組件,文件系統(tǒng),安全組件,其中上云組件集合了各種常用的上云方式:

測試第一個(gè)代碼:根據(jù)自己的開發(fā)板在encentOS-tiny\board文件夾下尋找相對應(yīng)的開發(fā)板,我這里選擇TencentOS_tiny_EVB_MX_Plus,進(jìn)入文件夾,打開KEIL文件,打開hello_world工程。

主函數(shù)中初始化了開發(fā)板的外設(shè)和任務(wù)的創(chuàng)建啟動

board_init();初始化了系統(tǒng)的時(shí)鐘,UART,定時(shí)器和OLED的顯示,所以編譯燒錄后可以在屏幕上顯示相關(guān)信息。

hello_world.c文件主要是創(chuàng)建任務(wù),以及任務(wù)之間的調(diào)用??梢栽诖谟^察任務(wù)運(yùn)行情況

#define TASK1_STK_SIZE          1024

void task1(void *arg);

osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE);



#define TASK2_STK_SIZE          1024

void task2(void *arg);

osThreadDef(task2, osPriorityNormal, 1, TASK2_STK_SIZE);



#if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0u

#define TASK3_STK_SIZE          512

void task3(void *arg);

#endif



void task1(void *arg)

{

#if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0u

    osThreadId task_dyn_created;



    osThreadDynamicDef(task3, osPriorityNormal, 1, TASK3_STK_SIZE);

    task_dyn_created = osThreadCreate(osThread(task3), NULL);



    int count = 0;

#endif



    while (1) {

        printf("###I am task1\r\n");

        osDelay(2000);



#if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0u

        if (count++ == 3) {

            printf("###I am task1, kill the task3(dynamic created)\r\n");

            osThreadTerminate(task_dyn_created);

        }

#endif

    }

}



void task2(void *arg)

{

    while (1) {

#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u

        k_err_t rc;

        int depth;



        rc = tos_task_stack_draught_depth(K_NULL, &depth);

        printf("%d  %d\n", rc, depth);

#endif



        printf("***I am task2\r\n");

        osDelay(1000);

    }

}



#if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0u

void task3(void *arg)

{

    while (1) {

        printf("$I am task3(dynamic created)\r\n");

        osDelay(2000);

    }

}

#endif



void application_entry(void *arg)

{

    printf("***I am task\r\n");

    osThreadCreate(osThread(task1), NULL); // Create task1

    osThreadCreate(osThread(task2), NULL); // Create task2

}

二.上云!既然是物聯(lián)網(wǎng)操作系統(tǒng),不聯(lián)網(wǎng)那不就是耍流氓嘛!因?yàn)槭球v訊的物聯(lián)網(wǎng)平臺,那么針對自家的平臺適配性肯定是最好的,我們就上騰訊云IoT Explorer平臺。

1.云端配置登錄騰訊云物聯(lián)網(wǎng)開發(fā)平臺,登陸后點(diǎn)擊立即使用進(jìn)入產(chǎn)品開發(fā)界面。

1.1 新建項(xiàng)目選擇【公共實(shí)例】或您購買的【標(biāo)準(zhǔn)企業(yè)實(shí)例】。

進(jìn)入項(xiàng)目列表頁面,單擊【新建項(xiàng)目】。項(xiàng)目名稱:輸入“智能燈演示”或其他名稱。項(xiàng)目描述:按照實(shí)際需求填寫項(xiàng)目描述。

項(xiàng)目基本信息填寫完成后,單擊【保存】,即可完成新建項(xiàng)目。項(xiàng)目新建成功后,即可新建產(chǎn)品。1.2 產(chǎn)品開發(fā)1.2.1 新建產(chǎn)品進(jìn)入該項(xiàng)目的產(chǎn)品列表頁面,單擊【新建產(chǎn)品】。在新建產(chǎn)品頁面,填寫產(chǎn)品基本信息。

  • 產(chǎn)品名稱:輸入“智能燈”或其他產(chǎn)品名稱。
  • 產(chǎn)品品類:選擇“智慧城市”>“公共事業(yè)”>“路燈照明”。
  • 設(shè)備類型:選擇“設(shè)備”。
  • 認(rèn)證方式:選擇“密鑰認(rèn)證”。
  • 通信方式:這里選擇其他。
  • 其他都為默認(rèn)選項(xiàng)。

1.2.2 完善產(chǎn)品點(diǎn)擊產(chǎn)品名稱進(jìn)入產(chǎn)品配置頁面在數(shù)據(jù)模板頁面系統(tǒng)會自動推介了標(biāo)準(zhǔn)功能,如果有需要可自行添加

數(shù)據(jù)模板是一個(gè) JSON 格式的文件,使用數(shù)據(jù)模板協(xié)議,用戶的設(shè)備需按數(shù)據(jù)模板定義要求傳輸設(shè)備數(shù)據(jù)到云端,并可使用基于數(shù)據(jù)模板的諸多業(yè)務(wù)功能,點(diǎn)擊查看json可以看到上面創(chuàng)建功能的json格式:

1.3 創(chuàng)建測試設(shè)備完成數(shù)據(jù)模板后直接進(jìn)入設(shè)備調(diào)試,其他的功能暫時(shí)用不到。在【設(shè)備調(diào)試】頁面中,單擊【新建設(shè)備】,設(shè)備名為 dev001:

三、開發(fā)板代碼燒錄TencentOS tiny項(xiàng)目工程中包含了explorer的demo工程,進(jìn)入該目錄:

這三個(gè)數(shù)據(jù)信息在產(chǎn)品dev001詳情頁中,點(diǎn)擊藍(lán)色dev001字樣便可進(jìn)入:

配置wifi信息

將此處的wifi信息替換為自己的wifi信息,注意:wifi應(yīng)是2.4G的wifi信號,因?yàn)镋SP8266不支持5G。編譯下載到開發(fā)板。查看設(shè)備狀態(tài)燒錄完成后保證程序處于運(yùn)行狀態(tài)。進(jìn)入【控制臺】>【產(chǎn)品開發(fā)】>【設(shè)備調(diào)試】,可查看到設(shè)備 “dev001” 的狀態(tài)為“上線”狀態(tài),表示 Demo 程序已成功連接上開發(fā)平臺。

云端控制設(shè)備串口助手可看到設(shè)備一直等待平臺的指令下發(fā)。

為了方便觀察到設(shè)備受控,這里控制開發(fā)板上的燈,因?yàn)樵摕糁皇芨叩碗娖娇刂疲詿o法顯示顏色,亮度的受控結(jié)果,這里會使用OLED來替代。在gpio.c中先初始化PB9

在data_template_sample.c中添加控制代碼:

void deal_down_stream_user_logic(void *client, ProductDataDefine   * pData)

{

    Log_d("someting about your own product logic wait to be done");



/////////////////////////////////////////////////////////////////////////////////////

    char *color_name;



    /* 燈光顏色 */

    switch (sg_ProductData.m_color) {

        case 0:

            color_name = " RED ";

            break;



        case 1:

            color_name = "GREEN";

            break;



        case 2:

            color_name = "BLUE";

            break;

    }



    if (sg_ProductData.m_power_switch == 1) {

        /* 燈光開啟式,按照控制參數(shù)展示 */

        light_power_on();

        light_change_color(color_name);

        light_change_brightness(sg_ProductData.m_brightness);

    } else {

        /* 燈光關(guān)閉展示 */

        light_power_off();

    }

}

在該函數(shù)中處理邏輯與硬件控制,當(dāng)接收到云端的消息,數(shù)據(jù)已經(jīng)處理封裝在pdata。此時(shí)我們在控制臺發(fā)送指令就可以。

騰訊的TencentOS tiny物聯(lián)網(wǎng)開發(fā)還是很方便的,最重要的是網(wǎng)上的大神豐富了例程,很多東西拿來就能用,省去很大的精力開發(fā),我也是借鑒了大神們的demo,此文最主要的目的是完善這個(gè)流程,代碼還是其他人的,自己只是在上面做了一些修改。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 2
收藏 1
關(guān)注 210
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧