0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式開發(fā):如何使用機智云+STM32F407+ESP8266+freeRTOS設(shè)計

9GxC_IoTMaker ? 來源:CSDN技術(shù)社區(qū) ? 作者:霽雪寒霄 ? 2021-02-14 11:39 ? 次閱讀

前言

隨著物聯(lián)網(wǎng)的發(fā)展,未來的嵌入式產(chǎn)品必然朝著更加智能化、場景多樣化、實時性更高等趨勢發(fā)展,要處理好這些任務時,一個好的RTOS少不了。對于嵌入式開發(fā)者來說,了解和學習一個RTOS也是必要項之一,上手簡單、及時性和可靠性高的FreeRTOS是最佳選擇,和對開發(fā)者友好、物聯(lián)網(wǎng)開發(fā)平臺機智云配合,剛好滿足了我對智能化開發(fā)的需求。 下面,我將從基礎(chǔ)入手,來講講使用機智云+STM32F407+ESP8266+freeRTOS的設(shè)計,分別定義了GPIO輸入輸出,PWM輸入輸出。(本文由機智云開發(fā)者發(fā)表于CSDN,ID號:霽雪寒霄)

01 WiFi模塊燒錄GAgent 1.1 在機智云官網(wǎng)上下載固件,下載好的固件如圖1-1所示。

2c7f0cf4-5818-11eb-8b86-12bb97331649.png

1.2 在樂鑫官網(wǎng)下載ESP8266的燒寫工具。其中第一欄選擇燒寫的固件文件(32位含有combine的文件),并勾選前面的方框,起始地址填0,CrystalFreq選擇26M,SPI SPEED選擇40MHz,SPI MODE選擇DOUT,FLASH SIZE選擇32Mbit-C1。如圖1-2所示。

2d66cc74-5818-11eb-8b86-12bb97331649.png


1.3 按照圖1-3連接電路。點擊燒寫軟件的START,會出現(xiàn)“等待上電同步”字樣,點擊KEY1觸發(fā)后,會顯示下載中,知道出現(xiàn)“Finish”字樣,表示固件燒寫成功。

2d919148-5818-11eb-8b86-12bb97331649.png

02 創(chuàng)建產(chǎn)品及數(shù)據(jù)點 2.1 進入機智云官網(wǎng),注冊登錄后進入開發(fā)者中心,可以看到如圖2-1所示界面。

2dd50860-5818-11eb-8b86-12bb97331649.png

2.2 點擊創(chuàng)建產(chǎn)品,在創(chuàng)建界面設(shè)定好產(chǎn)品名稱,選擇WIFI/移動網(wǎng)絡(luò)方案。選擇通訊方式為WIFI,數(shù)據(jù)傳輸方式為定長。如圖2-2所示。

2e405df4-5818-11eb-8b86-12bb97331649.png


2.3 創(chuàng)建完成后,點擊“數(shù)據(jù)點”,可以新建不同類型的數(shù)據(jù)點,如圖2-3所示,該處新建了16個不同的數(shù)據(jù)點。

2e99e32e-5818-11eb-8b86-12bb97331649.png

03 使用機智云串口工具配置WiFi模塊 3.1 下載機智云串口調(diào)試助手并解壓,將WIFI模塊與USB轉(zhuǎn)TTL相連(WIFI模塊的TX連TTL的RX,RX連TTL的TX,VCC一定得接3.3V),插上計算機USB接口后,打開機智云串口調(diào)試助手,選擇“模擬V4MCU”,如圖3-1所示。

2efb83a4-5818-11eb-8b86-12bb97331649.png


3.2 進入剛創(chuàng)建機智云產(chǎn)品中,點擊“基本信息”后,獲取到Product Key和Product Secret,如圖3-2-1所示。將Product Key和Product Secret輸入機智云串口調(diào)試助手,并點擊保存,會彈出如圖3-2-2的窗口,且右側(cè)會顯示我們定義的數(shù)據(jù)點列表。

2f235ec4-5818-11eb-8b86-12bb97331649.png

30234de8-5818-11eb-8b86-12bb97331649.png


3.3 選擇好USB轉(zhuǎn)TTL的串口,并點擊“打開串口”,WIFI模塊會自動詢問,如圖3-3所示。

30d5a33a-5818-11eb-8b86-12bb97331649.png


3.4 打開“指令界面”,點擊AirLink后,接收界面會出現(xiàn)如圖3-4類似的數(shù)據(jù),代表WIFI模塊完好。

3168f82e-5818-11eb-8b86-12bb97331649.png


3.5 進入機智云手機App,注冊登錄后,點擊右上角“+”號,選擇“一鍵配置”,輸入手機連接的WIFI的SSID和密碼(此時須保證調(diào)試的計算機與手機連接的是同一WIFI,且最好使用路由器),點擊“下一步”,選擇“樂鑫”,點擊 “確定”,再次點擊機智云串口調(diào)試助手指令界面的“AirLink”,再點擊手機App上的“我已完成上述操作”,進入“搜索并連接設(shè)備”,具體流程如圖3-5-1,3-5-2所示。

3193b582-5818-11eb-8b86-12bb97331649.png

31b2b702-5818-11eb-8b86-12bb97331649.png


3.6 點擊搜索到的設(shè)備,在手機App上控制數(shù)據(jù)點,可以看到機智云串口調(diào)試助手數(shù)據(jù)點的值跟隨變化(如圖3-6-1,3-6-2所示),則代表WIFI模塊配置完成。

322608ba-5818-11eb-8b86-12bb97331649.png

324f2560-5818-11eb-8b86-12bb97331649.png

04 配置MCU代碼 實現(xiàn)WIFI與MCU的通信協(xié)議(可使用機智云MCU代碼生成),配置Cube mx并生成代碼。
4.1 進入機智云網(wǎng)站產(chǎn)品頁面,點擊MCU開發(fā),硬件方案選擇“獨立MCU方案”,硬件平臺選擇“STM32F407x”,并在Product Secret處輸入該產(chǎn)品的Product Secret,點擊生成代碼包,如圖4-1所示。

32ad7700-5818-11eb-8b86-12bb97331649.png


4.2 稍等片刻待代碼包生成,下載并解壓,如圖4-2所示。

32fd3b32-5818-11eb-8b86-12bb97331649.png


4.3 由于在該實驗中我們使用的是STM32F407VGT6,而機智云生成代碼的MCU為STM32F407ZGT6,故我們需要移植一下,首先打開Cube mx新建一個項目,選擇STM32F407VG(如圖4-3所示),雙擊創(chuàng)建項目。

33700c7a-5818-11eb-8b86-12bb97331649.png


4.4 點擊File->Import Project,點擊“…”并選擇剛才機智云生成的項目文件中的ioc文件(如圖4-4-1所示),點擊“OK”后,直到出現(xiàn)圖4-4-2所示窗口,點擊“Close”,表示導入成功,導入后的引腳配置如圖4-4-3所示。

35553592-5818-11eb-8b86-12bb97331649.png

35f15332-5818-11eb-8b86-12bb97331649.png

3670048e-5818-11eb-8b86-12bb97331649.png


4.5 首先配置SYS,Timebase Source選擇TIM14,如圖4-5-1所示。然后配置除了KEY1,KEY2的GPIO(KEY1,KEY2已經(jīng)自動生成),如圖4-5-2所示。

37085dec-5818-11eb-8b86-12bb97331649.png

377a268e-5818-11eb-8b86-12bb97331649.png


4.6 配置Timers,TIM2是項目生成時自動配置,所以不用配置,配置TIM4時,將Clock Source選擇為Internal Clock。TIM4的Channel 1-Channel 4為PWM輸出(如圖4-6-1),該實驗中配置的引腳為PB6-PB9,在下方的Configuration中的Parameter Settings中配置如圖4-6-2所示,其他地方使用默認即可。

37ad8bbe-5818-11eb-8b86-12bb97331649.png

37daef1e-5818-11eb-8b86-12bb97331649.png

4.7 再配置ADC,勾選IN4-IN7(對應引腳為PA4-PA7),如圖4-7-1所示。然后在下方Configuration中DMA Setting,點擊“Add”,出現(xiàn)如圖4-7-2所示界面,選擇ADC1,并配置成如圖4-7-3所示, Parameter Settings中配置如圖4-7-4所示,其他不用配置,保持默認即可,值得注意的是,該處使用到了TIM8,TIM8的Mode中Clock Source選擇為Internal Clock,TIM8的Configuration配置如圖4-7-5所示。

380753c4-5818-11eb-8b86-12bb97331649.png

3864c0ea-5818-11eb-8b86-12bb97331649.png

38af9002-5818-11eb-8b86-12bb97331649.png

38f82b1e-5818-11eb-8b86-12bb97331649.png

3a0a1616-5818-11eb-8b86-12bb97331649.png


4.8 點擊System Core中的NVIC,配置優(yōu)先級如圖4-8-1所示,Code generation配置如圖4-8-2所示。

3a5dcc02-5818-11eb-8b86-12bb97331649.png

3a8b981c-5818-11eb-8b86-12bb97331649.png


4.9 點擊Middleware中的FREERTOS,interface選擇CMSIS_V1(如圖4-9-1所示),在下方Tasks and Queues并創(chuàng)建以下6個Task,如圖4-9-2所示。

3afbf940-5818-11eb-8b86-12bb97331649.png

3b4083ee-5818-11eb-8b86-12bb97331649.png

05 編寫外設(shè)驅(qū)動程序 編寫外設(shè)驅(qū)動程序,直至手機App能與MCU建立通信,并能控制傳感器外設(shè)。
5.1 打開keil5,在main.c中找到HAL_TIM_PeriodElapsedCallback函數(shù),將整個函數(shù)注釋掉,然后在gizwits_product.c文件中同樣可以找到同名HAL_TIM_PeriodElapsedCallback函數(shù),將剛才注釋函數(shù)的函數(shù)體內(nèi)容放入其中,如圖5-1-1,5-1-2所示。

3bc244c4-5818-11eb-8b86-12bb97331649.png

3c03e3a2-5818-11eb-8b86-12bb97331649.png


5.2 將main.c中while(1)中內(nèi)容剪切放入創(chuàng)建的StartGizwitsHandleTask任務中,用于處理數(shù)據(jù)上行下發(fā),如圖5-2-1,5-2-2所示。

3cb47618-5818-11eb-8b86-12bb97331649.png

3cf770ee-5818-11eb-8b86-12bb97331649.png


5.3 將StartSysInitTask函數(shù)中for循環(huán)內(nèi)容改為vTaskDelete(NULL),如圖5-3所示。

3d20c872-5818-11eb-8b86-12bb97331649.png


5.4 在gizwits_product.h文件中頭文件導入處添加(如圖5-4-1所示)“#include“smsis_os.h””,并添加如圖5-4-2所示內(nèi)容。

3d6ad9f8-5818-11eb-8b86-12bb97331649.png

3db90da8-5818-11eb-8b86-12bb97331649.png


5.5 在common.h中創(chuàng)建聯(lián)合體,如圖5-5-1所示,其中高8位用以區(qū)別GPIO和PWM,次高8位用來區(qū)別引腳,后16為存入數(shù)值。在函數(shù)gizwitsEventProcess中,for循環(huán)外聲明聯(lián)合體(如圖5-5-2所示),for循環(huán)中switch—case語句中,注釋掉if—else判斷,對聯(lián)合體變量賦值,并利用通知將該聯(lián)合體發(fā)送出去,如圖5-5-3所示(個例)。

3e4d715a-5818-11eb-8b86-12bb97331649.png

3ef72ab0-5818-11eb-8b86-12bb97331649.png

3f5c55a2-5818-11eb-8b86-12bb97331649.png


5.6 在StartGPIO_OutputTask函數(shù)中,在for循環(huán)外添加如圖5-6-1的聲明代碼,在for循環(huán)內(nèi),刪除原先所有代碼,添加如圖5-6-2所示代碼,本圖只舉case為1的情況,添加后可對GPIO進行開關(guān)操作。

3fcd8b1e-5818-11eb-8b86-12bb97331649.png

400e1aa8-5818-11eb-8b86-12bb97331649.png


5.7 在StartPWM_OutputTask函數(shù)中,需要開啟PWM通道,并需要先將CCR置為0(在for循環(huán)外,如圖5-7-1所示),并就通知內(nèi)容的不同,做不同的動作(在for循環(huán)內(nèi)),添加代碼部分如圖5-7-2所示。

4061a204-5818-11eb-8b86-12bb97331649.png

40d3341e-5818-11eb-8b86-12bb97331649.png


5.8 在StartGPIO_InputTask函數(shù)中,直接利用HAL_GPIO_ReadPin讀取GPIO狀態(tài),并存入數(shù)據(jù)點結(jié)構(gòu)體中,如圖5-8-1所示。在StartADC_inputTask函數(shù)中,需要先開啟DMA,其中adc_result_buf為定義的一個長度為4的數(shù)組,添加代碼如圖5-8-2所示。

415b5db2-5818-11eb-8b86-12bb97331649.png

4192e728-5818-11eb-8b86-12bb97331649.png


5.9 將main.c中的如下代碼剪切(如圖5-9-1所示)到StartSysInitTask函數(shù)中(如圖5-9-2所示)。

42767a56-5818-11eb-8b86-12bb97331649.png

43001522-5818-11eb-8b86-12bb97331649.png

06 檢測 至此,兩類輸入/輸出代碼完成,可以根據(jù)不同用途添加代碼,在這里我用到了一個LED檢測了一下。
6.1 手機上打開機智云App,控制舵機轉(zhuǎn)動和LED亮滅。如下圖所示。

463f375e-5818-11eb-8b86-12bb97331649.png

責任編輯:PSY

原文標題:嵌入式開發(fā)必備項:用FreeRTOS+機智云開發(fā)智能設(shè)備

文章出處:【微信公眾號:機智云開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5088

    文章

    19158

    瀏覽量

    306484
  • RTOS
    +關(guān)注

    關(guān)注

    22

    文章

    817

    瀏覽量

    119769
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1215

    瀏覽量

    52231
  • 機智云
    +關(guān)注

    關(guān)注

    2

    文章

    590

    瀏覽量

    26442

原文標題:嵌入式開發(fā)必備項:用FreeRTOS+機智云開發(fā)智能設(shè)備

文章出處:【微信號:IoTMaker,微信公眾號:機智云開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32F407機智開發(fā)esp8266固件燒寫一直不成功

    按照STM32F407 機智開發(fā)手冊上的實驗步驟,板子和esp8266連接燒寫固件,一直失敗,求指導
    發(fā)表于 05-06 23:10

    嵌入式開發(fā)必備項:用FreeRTOS+STM32F4+機智開發(fā)智能設(shè)備

    +STM32F407+ESP8266+freeRTOS的設(shè)計,分別定義了GPIO輸入輸出,PWM輸入輸出。實現(xiàn)步驟如下:WIFI模塊燒錄GAgent。1.1 在機智官網(wǎng)上下載固件,下載好的固件如圖1-1所示。1.2 在樂鑫官網(wǎng)
    發(fā)表于 01-15 14:12

    STM32F407ZGT6+esp8266軟件APP硬件組成

    要求:通過手機上的機智通用APP,點亮開發(fā)板載LED0、LED1摘要硬件組成:STM32F407ZGT6+esp8266(樂鑫)軟件APP:機智
    發(fā)表于 08-05 07:06

    VScode嵌入式開發(fā)ESP8266詳解

    VScode嵌入式開發(fā)ESP32以及ESP8266入門1.適用與有部分C語言的開發(fā)者或者學生學習ESP系列的
    發(fā)表于 11-08 06:12

    自動測量系統(tǒng)STM32F103C8+ESP8266+DHT22的相關(guān)資料分享

    目錄STM32嵌入式開發(fā)筆記——自動測量系統(tǒng)STM32F103C8+ESP8266+DHT22一、 系統(tǒng)功能與原理二、 系統(tǒng)硬件需求三、 系統(tǒng)模塊介紹與設(shè)置Stm32F103C8T6
    發(fā)表于 12-21 07:49

    機智ESP8266模組固件資料下載

    機智ESP8266模組固件
    發(fā)表于 04-23 15:55 ?67次下載
    <b class='flag-5'>機智</b><b class='flag-5'>云</b><b class='flag-5'>ESP8266</b>模組固件資料下載

    從5方面描述STM32F407+ESP8266連接機智過程

    由于本次使用的ESP8266是原來機智二代產(chǎn)品上的,可能正常聯(lián)上機智,故沒有給ESP8266
    的頭像 發(fā)表于 06-21 10:06 ?1.2w次閱讀

    ST意法半導體與機智攜手打造的物聯(lián)網(wǎng)開源方案DIY數(shù)字儀表

    MCU設(shè)備端基于ST提供的固定嵌入式開發(fā)板進行開發(fā),ST提供最新板卡及開發(fā)資源,板卡采用雙MCU:STM32G0和STM32F7,搭載最新G
    的頭像 發(fā)表于 02-04 14:55 ?3198次閱讀

    機智Arduino與ESP8266 ESP12-F之間的連接

    這些天在琢磨ESP8266 ESP12-F接入機智的方法,試了很多坑。比如ESP12-F與arduino 之間的接線問題,找了好多資料。其
    的頭像 發(fā)表于 05-25 16:41 ?5858次閱讀
    <b class='flag-5'>機智</b><b class='flag-5'>云</b>Arduino與<b class='flag-5'>ESP8266</b> <b class='flag-5'>ESP12-F</b>之間的連接

    基于FreeRTOS嵌入式臺控制系統(tǒng)設(shè)計

    基于FreeRTOS嵌入式臺控制系統(tǒng)設(shè)計(嵌入式開發(fā)要學單片機嗎)-基于FreeRTOS嵌入式
    發(fā)表于 07-30 11:57 ?19次下載
    基于<b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>云</b>臺控制系統(tǒng)設(shè)計

    嵌入式開發(fā)-WIFI模塊-ESP8266使用詳細介紹

    ESP8266使用詳細介紹目錄ESP8266使用詳細介紹1.工具準備2.簡介3.模式介紹4.具體代碼5.嵌入式開發(fā)參考1.工具準備串口助手:鏈接:https://pan.baidu.com/s
    發(fā)表于 11-02 18:21 ?85次下載
    <b class='flag-5'>嵌入式開發(fā)</b>-WIFI模塊-<b class='flag-5'>ESP8266</b>使用詳細介紹

    VScode嵌入式開發(fā)ESP32以及ESP8266入門

    VScode嵌入式開發(fā)ESP32以及ESP8266入門1.適用與有部分C語言的開發(fā)者或者學生學習ESP系列的
    發(fā)表于 11-03 12:51 ?29次下載
    VScode<b class='flag-5'>嵌入式開發(fā)</b>之<b class='flag-5'>ESP</b>32以及<b class='flag-5'>ESP8266</b>入門

    STM32F4】STM32F407+ESP8266連接機智過程詳解

    要求:通過手機上的機智通用APP,點亮開發(fā)板載LED0、LED1摘要硬件組成:STM32F407ZGT6+esp8266(樂鑫)軟件APP:機智
    發(fā)表于 12-06 09:06 ?27次下載
    【<b class='flag-5'>STM32F</b>4】<b class='flag-5'>STM32F407+ESP8266</b>連接<b class='flag-5'>機智</b><b class='flag-5'>云</b>過程詳解

    STM32F103 + ESP8266機智開發(fā)常見問題集錦:入門者必讀!

    關(guān)于ESP8266模塊的選擇針對初學者,強烈建議選擇帶有串口的ESP8266開發(fā)板!這可以避免像我曾經(jīng)遇到的燒錄固件失敗等問題。推薦直接購買已預裝機智
    的頭像 發(fā)表于 07-18 08:11 ?537次閱讀
    <b class='flag-5'>STM32F</b>103 + <b class='flag-5'>ESP8266</b>與<b class='flag-5'>機智</b><b class='flag-5'>云</b><b class='flag-5'>開發(fā)</b>常見問題集錦:入門者必讀!

    STM32 ESP8266阿里鏈接源碼

    stm32F103C8T6 ESP8266 物聯(lián)網(wǎng)電表 登錄阿里
    發(fā)表于 08-29 14:21 ?6次下載