一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

機(jī)智云配網(wǎng)教程第三期:單片機(jī)代碼移植實(shí)戰(zhàn)

機(jī)智云 ? 2025-07-01 17:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


前言519da97a-565e-11f0-b47f-92fbcf53809c.png


本篇文章將分享單片機(jī)移植的經(jīng)驗(yàn)??梢韵螺d并按步驟移植,也可以直接使用已移植好的工程文件。文中將介紹我在移植過程中遇到的問題,并提供解決方案,供大家參考。


準(zhǔn)備工作519da97a-565e-11f0-b47f-92fbcf53809c.png


1.硬件:主控:stm32f103c8t6 ,WiFi模塊:ESP-01s ,下載器:ST-LINK


2.軟件:keil5的工程文件模板,mcu代碼包

代碼資源:未移植和移植后

(注:本文是基于stm32標(biāo)準(zhǔn)庫移植,不是HAL庫,HAL可參考第一期給的資源)



各模塊介紹519da97a-565e-11f0-b47f-92fbcf53809c.png


1、keil工程說明


下載完未移植的代碼包后,打開工程,在System中有我配置的配網(wǎng)的基本模塊:USART1(用于串口調(diào)試,接USB轉(zhuǎn)TTL連接到電腦上,打開串口助手對(duì)后期通信進(jìn)行測試,單本部分功能我并未用上,也未進(jìn)行測驗(yàn),就不誤人子弟了,不影響配網(wǎng)),USART3(用于WiFi通信,必要),TIM3(1ms定時(shí),必要);在Hardware中有個(gè)RGB模塊(其實(shí)就是點(diǎn)燈),后期用于驗(yàn)證。





51c23150-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


2、MCU代碼包說明





51e9468c-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png
代碼移植519da97a-565e-11f0-b47f-92fbcf53809c.png


1、打開開發(fā)指南,開發(fā)指南中有我們移植需要做的具體工作,以及每個(gè)文件,函數(shù)的說明,就不在過多介紹,下面直接開始移植。





5212e000-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


2、將MCU代碼包的Gizwits和Utils復(fù)制到keil的工程文件夾中。

3、打開工程,將上面兩個(gè)文件加入工程中,并將路徑包含進(jìn)去。





5259170a-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


(注:如果運(yùn)行報(bào)錯(cuò)可以看下C/C++文件路徑:keil5的include路徑要根據(jù)自己下載的keil5路徑選擇;Linker也可看下是否有此行,同理根據(jù)自己的keil5的下載路徑找)





5284ece0-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


4.通信串口(USART3)接收配置:開發(fā)指南中給的是USART2,不過不影響,也可以改用其他的串口(注:stm32f103c8t6只有USART1-3)。將開發(fā)手冊(cè)中串口2的中斷函數(shù)移植到工程文件的USART3中斷函數(shù)處。并將串口2改成串口3:USART_ClearITPendingBit(USART3,USART_IT_RXNE);

value = USART_ReceiveData(USART3);移植完后會(huì)報(bào)一個(gè)警告,在上面加上( #include "gizwits_product.h" )頭文件即可。





52a2ffe6-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png





52c7fb0c-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


4、發(fā)送數(shù)據(jù)配置:在工程中打開gizwits_product.c文件,找到開發(fā)手冊(cè)中給出的函數(shù),將紅色部分串口改為3,


USART_SendData(USART3, buf[i]);

while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);


USART_SendData(USART3,0x55);

while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);移植進(jìn)去,再將usart3的頭文件( #include "usart3.h" )包含進(jìn)去。





52e585f0-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png





5307da38-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


5、1ms定時(shí)器(TIM3)配置:開發(fā)指南給的是TIM3,這里我們也選擇TIM3(也可配置其他定時(shí)器,但此開發(fā)板只有TIM1-4,建議不要使用TIM1高級(jí)定時(shí)器,因?yàn)槠渌齻€(gè)定時(shí)器都有TIMx_IRQn中斷,但TIM1沒有,用TIM1_UP_IRQn沒有效果,這是我在配置過程中遇到的問題之一,僅供參考,有大佬知道原因也可以告訴我。)只需將紅色部分( gizTimerMs(); )移入我們工程的TIM3中斷函數(shù)處,在加上( #include "gizwits_product.h" )頭文件,此時(shí)依舊會(huì)報(bào)一個(gè)警告,我們?cè)倩氐絞izwits_product.c文件,找到void gizTimerMs(void);將其復(fù)制到gizwits_product.h文件中聲明一下。



53389196-565e-11f0-b47f-92fbcf53809c.png534c4204-565e-11f0-b47f-92fbcf53809c.png535f272a-565e-11f0-b47f-92fbcf53809c.png5374be50-565e-11f0-b47f-92fbcf53809c.png


6、芯片復(fù)位:打開gizwits_product.c文件,找到void mcuRestart(void),將機(jī)智云提供的復(fù)位函數(shù)


__set_FAULTMASK(1);

NVIC_SystemReset();


復(fù)制進(jìn)去。


53822e82-565e-11f0-b47f-92fbcf53809c.png

539fcfd2-565e-11f0-b47f-92fbcf53809c.png


7、串口打印功能(USART1):此部分功能我并未測試,大家可以自己去測試看看,不測試也沒關(guān)系,大家保留工程中的USART1文件內(nèi)容不變即可,不影響配網(wǎng),但要注意,由于文件中有重定向的的函數(shù)int fputc(int ch, FILE *f),所以在編譯前一定要在魔法棒里C/C++中勾選Use MicroLIB,否則程序會(huì)卡死。?。?!另外,在此文件中一定要加上頭文件( #include "gizwits_protocol.h" )。這是我后面下載后發(fā)現(xiàn)產(chǎn)生不了WIFI信號(hào)又補(bǔ)充的。


53ae85d6-565e-11f0-b47f-92fbcf53809c.png

53c495c4-565e-11f0-b47f-92fbcf53809c.png53e57348-565e-11f0-b47f-92fbcf53809c.png


8、串口和定時(shí)器配置完成后,我們?cè)趍ain.c文件中進(jìn)行添加頭文件( #include "USART3.h"

#include "usart1.h" #include "tim3.h" )和初始化( USART3_Init(9600);USART1_Init();

Timer_TIM3_Init(10-1,7200-1); ),編譯運(yùn)行,沒有報(bào)錯(cuò)。





53f9da7c-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


9、main.c函數(shù)移植:打開之前生成的MCU包,打開User里的main.c,將userInit(); gizwitsInit();和userHandle();gizwitsHandle((dataPoint_t *)¤tDataPoint);復(fù)制到我們工程文件的main.c文件對(duì)應(yīng)處,此時(shí)會(huì)報(bào)錯(cuò),我們?cè)賹㈩^文件( #include "gizwits_product.h"

#include "gizwits_protocol.h" )添加進(jìn)去。


54203c4e-565e-11f0-b47f-92fbcf53809c.png

5433cd2c-565e-11f0-b47f-92fbcf53809c.png


10、配網(wǎng)設(shè)置:配網(wǎng)模式有AIRLINK(自動(dòng))和SOFTAP(手動(dòng))兩種,機(jī)智云給的開發(fā)指南建議用按鍵進(jìn)行配網(wǎng),由于本工程并沒有按鍵模塊,所以我們不用按鍵,直接進(jìn)行配網(wǎng)。將開發(fā)指南的兩個(gè)

配網(wǎng)指令( gizwitsSetMode(WIFI_SOFTAP_MODE);gizwitsSetMode(WIFI_AIRLINK_MODE); )直接復(fù)制到main.c文件中,先啟用SOFTAP模式,編譯。





544a4b88-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png



硬件連接519da97a-565e-11f0-b47f-92fbcf53809c.png


54712e56-565e-11f0-b47f-92fbcf53809c.jpg519da97a-565e-11f0-b47f-92fbcf53809c.png


(注:EN引腳一定要使能,接VCC,否則即使文件配置好了,也不會(huì)產(chǎn)生WIFI,我之前就是沒配置EN引腳,導(dǎo)致我花了好幾天才找到這個(gè)問題)


配網(wǎng)(SOFTAP)519da97a-565e-11f0-b47f-92fbcf53809c.png

1、手機(jī)先產(chǎn)生一個(gè)熱點(diǎn)。設(shè)備名稱:盡量為英文,短點(diǎn) ,密碼:配置簡單點(diǎn),重點(diǎn)是在更多共享配置里將熱點(diǎn)的AP頻段配置成2.4GHz。





549be128-565e-11f0-b47f-92fbcf53809c.jpg519da97a-565e-11f0-b47f-92fbcf53809c.png


2、將程序下載進(jìn)開發(fā)板,調(diào)試,此步驟需要進(jìn)行反復(fù)調(diào)試,運(yùn)氣好可能可能第一次就會(huì)收到一個(gè)WIFI信號(hào),運(yùn)氣不好可能就要反復(fù)調(diào)試。


調(diào)試的辦法有:1.程序下載完成后,拔掉ST-LINK,再充新插上,剛上電可能看見WiFi模塊上的藍(lán)燈頻繁閃爍,打開手機(jī)WIFI搜索熱點(diǎn),看看是否有XPG-GAgent-開頭的熱點(diǎn),如果燈滅了還有熱點(diǎn),那么就繼續(xù)拔掉重插。


3、將WIFI模塊的vcc供電拔掉,重新插上,開始時(shí)WIFI的藍(lán)燈閃爍的也比較頻繁,打開手機(jī)WIFI搜索熱點(diǎn),看看是否有XPG-GAgent-開頭的熱點(diǎn),如果燈滅了還有熱點(diǎn),那么就繼續(xù)拔掉重插。


(如果前面步驟沒問題,重復(fù)上面兩步,就可以接收到一個(gè)XPG-GAgent-開頭的熱點(diǎn),我也不知道怎么回事,我前一個(gè)項(xiàng)目很好配,而這個(gè)項(xiàng)目我在寫文章的時(shí)候要調(diào)試好幾遍,才能配上,可能串口不一樣吧。)





54babae4-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


4、打開手機(jī)機(jī)智云APP,直接跳過登錄,點(diǎn)擊右上角加號(hào)-------熱點(diǎn)配網(wǎng)-------手機(jī)要連接上路由器或者另一個(gè)手機(jī)的熱點(diǎn)(這個(gè)連上直接有,一般不用填)--------然后填寫機(jī)智云的熱點(diǎn)和密碼(默認(rèn):123456789)------下一步------選擇WIFI模塊(ESP-01s選樂鑫就行)-----一直下一步跳轉(zhuǎn)到XPG-GAgent-連接頁面-----連接之后退回-----開始搜索,這個(gè)即使配網(wǎng)完成也不會(huì)自動(dòng)取消,到時(shí)未取消會(huì)顯示配置超時(shí),不用管,返回就可以看到配網(wǎng)成功。


54d3a7e8-565e-11f0-b47f-92fbcf53809c.png0154e6fa6e-565e-11f0-b47f-92fbcf53809c.png0254f4b776-565e-11f0-b47f-92fbcf53809c.jpg03

5508cb44-565e-11f0-b47f-92fbcf53809c.jpg

04


此時(shí),配網(wǎng)就完成了(同理也可以配置成AIRLINK模式,在keil里燒錄對(duì)應(yīng)指令,然后手機(jī)一鍵配網(wǎng))。



驗(yàn)證

即使連上網(wǎng)了,我們?nèi)绾沃朗欠衲艹晒Πl(fā)送數(shù)據(jù)呢,我們以LED點(diǎn)亮驗(yàn)證一下。


在開發(fā)指南中提到了數(shù)據(jù)下發(fā)和上報(bào)的兩個(gè)功能函數(shù)userHandle();和gizwitsHandle((dataPoint_t *)¤tDataPoint); 我們也將其放在while循環(huán)中,下面我們就用它們來驗(yàn)證功能。


1、回到keil工程,打開gizwits_product.c文件,將rgb.h的頭文件包含進(jìn)去( #include "rgb.h" ),然后將開燈和關(guān)燈的指令分別放進(jìn)以下位置。(注意:自己的led是怎樣的,我用的是共陰的RGB燈)。





552d660c-565e-11f0-b47f-92fbcf53809c.png519da97a-565e-11f0-b47f-92fbcf53809c.png


2、編譯,下載。然后拔掉電源重新配網(wǎng)。(第二次配的就比較快了)。



結(jié)果演示519da97a-565e-11f0-b47f-92fbcf53809c.png


開關(guān):

55bac844-565e-11f0-b47f-92fbcf53809c.jpg

55cdcc46-565e-11f0-b47f-92fbcf53809c.jpg

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

    關(guān)注

    6067

    文章

    44991

    瀏覽量

    650436
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70735
  • 機(jī)智云
    +關(guān)注

    關(guān)注

    3

    文章

    617

    瀏覽量

    26847
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【有獎(jiǎng)問答】瘋狂愛答之單片機(jī)-第三期

    瘋狂愛答有你好看,感謝童鞋們對(duì)前兩的參與和支持,瘋狂愛答之單片機(jī)-第三期走起!一起瘋狂答題吧!點(diǎn)擊查看【有獎(jiǎng)問答】瘋狂愛答 匯總(4月15日更新) 一、活動(dòng)時(shí)間:4月15日-4月22日(每周一
    發(fā)表于 04-15 15:00

    【有獎(jiǎng)問答】瘋狂愛答之單片機(jī)-第三期獲獎(jiǎng)名單公布

    第三期結(jié)束,小編周末去了桂林一趟,桂林山水真的很美,希望瘋狂問答也能帶給您們美麗和智慧{:4_95:}趕緊加入我們吧!點(diǎn)擊查看【有獎(jiǎng)問答】瘋狂愛答 匯總(4月22日更新)第三期獲獎(jiǎng)名單公布:一等獎(jiǎng)
    發(fā)表于 04-22 10:25

    【有獎(jiǎng)問答】瘋狂愛答之電路設(shè)計(jì)-第三期獲獎(jiǎng)名單公布

    第三期結(jié)束,小編上周末去了桂林一趟,桂林山水真的很美,希望瘋狂問答也能帶給您們美麗和智慧{:4_95:}趕緊加入我們吧!點(diǎn)擊查看【有獎(jiǎng)問答】瘋狂愛答 匯總(4月22日更新)第三期獲獎(jiǎng)名單公布
    發(fā)表于 04-22 11:04

    【有獎(jiǎng)問答】瘋狂愛答之電源技術(shù)—第三期獲獎(jiǎng)名單公布

    第三期結(jié)束,小編上周末去了桂林一趟,桂林山水真的很美,希望瘋狂問答也能帶給您們美麗和智慧{:4_95:}趕緊加入我們吧!點(diǎn)擊查看【有獎(jiǎng)問答】瘋狂愛答 匯總(4月22日更新)第三期獲獎(jiǎng)名單公布
    發(fā)表于 04-22 11:34

    【有獎(jiǎng)問答】瘋狂愛答之FPGA—第三期獲獎(jiǎng)名單公布

    第三期結(jié)束,小編上周末去了桂林一趟,桂林山水真的很美,希望瘋狂問答也能帶給您們美麗和智慧{:4_95:}趕緊加入我們吧!點(diǎn)擊查看【有獎(jiǎng)問答】瘋狂愛答 匯總(4月22日更新)第三期獲獎(jiǎng)名單公布
    發(fā)表于 04-22 13:36

    開關(guān)電源免費(fèi)教程(第三期)開關(guān)電源的鉗位電路講解

    本帖最后由 張飛電子學(xué)院呂布 于 2021-3-26 15:05 編輯 大家下午好!該系列視頻為開關(guān)電源免費(fèi)教程,特邀姜維老師為大家講解,本期為第三期內(nèi)容。持續(xù)關(guān)注,我們會(huì)繼續(xù)更新!大家有關(guān)于開關(guān)電源以及工作中遇到的關(guān)于電源相關(guān)的難題,都可以在帖子下面與我們交流討論。上期回顧:輸出二極管選取
    發(fā)表于 03-19 14:00

    【視頻教程】單片機(jī)新手教程(第三期單片機(jī)介紹

    本帖最后由 松山歸人 于 2021-3-26 16:02 編輯 大家下午好!今天邀請(qǐng)了張角老師,來為大家深入講解單片機(jī),視頻為一個(gè)系列,本次為第三期內(nèi)容,請(qǐng)持續(xù)關(guān)注,我會(huì)進(jìn)行更新!上期回顧:單片機(jī)新手教程(第二
    發(fā)表于 03-26 15:55

    【視頻教程】單片機(jī)新手教程(第四單片機(jī)介紹

    本帖最后由 松山歸人 于 2021-3-26 16:01 編輯 大家下午好!今天邀請(qǐng)了張角老師,來為大家深入講解單片機(jī),視頻為一個(gè)系列,本次為第四內(nèi)容,請(qǐng)持續(xù)關(guān)注,我會(huì)進(jìn)行更新!上期回顧:單片機(jī)新手教程(
    發(fā)表于 03-26 15:57

    單片機(jī)實(shí)戰(zhàn)教程(第三期)M1A時(shí)鐘PCB布局

    本帖最后由 松山歸人 于 2021-4-7 14:48 編輯 大家下午好!今天給大家?guī)?b class='flag-5'>單片機(jī)實(shí)際項(xiàng)目教程,由黃忠老師為大家講解,本期內(nèi)容為第三期,M1A開發(fā)板PCB布局詳細(xì)講解,歡迎大家留言討論與交流! 上期回顧:(第二
    發(fā)表于 04-06 15:31

    單片機(jī)實(shí)戰(zhàn)教程(第四)M1A時(shí)鐘PCB布局2

    大家下午好!今天給大家?guī)?b class='flag-5'>單片機(jī)實(shí)際項(xiàng)目教程,由黃忠老師為大家講解,本期內(nèi)容為第四,M1A開發(fā)板PCB布局詳細(xì)講解,歡迎大家留言討論與交流!上期回顧:(第三期)M1A時(shí)鐘PCB布局
    發(fā)表于 04-06 15:35

    硬件實(shí)戰(zhàn)教程(第三期)常用運(yùn)放電路原理圖講解3

    本帖最后由 松山歸人 于 2021-4-17 09:31 編輯 大家上午好!這是我們硬件實(shí)戰(zhàn)教程的第三期內(nèi)容,由魯肅老師繼續(xù)為大家?guī)硪粋€(gè)實(shí)例項(xiàng)目的講解。大家關(guān)于原理圖設(shè)計(jì)的問題都可以提出來
    發(fā)表于 04-09 09:41

    硬件免費(fèi)教程(第三期)穩(wěn)壓電源LDO詳解

    大家下午好!今天給大家?guī)砉卫蠋煹挠布坛?,本次視頻為第三期,本次視頻教程全部免費(fèi)公開。我們會(huì)持續(xù)進(jìn)行更新,有問題可以留言一同交流討論。上期回顧:硬件免費(fèi)教程(第二)基本積分運(yùn)算電路和微分電路及公式推導(dǎo)
    發(fā)表于 04-16 14:03

    動(dòng)手玩轉(zhuǎn)Arduino(第三期)

    動(dòng)手玩轉(zhuǎn)Arduino(第三期),下來看看
    發(fā)表于 07-08 15:20 ?12次下載

    無線在中國-第三期-PDF

    電子發(fā)燒友網(wǎng)站提供《無線在中國-第三期-PDF.pdf》資料免費(fèi)下載
    發(fā)表于 11-17 10:48 ?0次下載
    無線在中國-<b class='flag-5'>第三期</b>-PDF

    網(wǎng)課回放 I 升級(jí)版“一站式” PCB 設(shè)計(jì)第三期:原理圖完整性及可靠性分析

    網(wǎng)課回放 I 升級(jí)版“一站式” PCB 設(shè)計(jì)第三期:原理圖完整性及可靠性分析
    的頭像 發(fā)表于 05-10 11:09 ?224次閱讀
    <b class='flag-5'>網(wǎng)</b>課回放 I 升級(jí)版“一站式” PCB 設(shè)計(jì)<b class='flag-5'>第三期</b>:原理圖完整性及可靠性分析