在《基于STM32HAL庫與標(biāo)準(zhǔn)庫的esp8266接入機(jī)智云方案(一)》中,我們?cè)敿?xì)介紹了硬件連接和機(jī)智云客戶端的創(chuàng)建。本篇將重點(diǎn)講解如何下載代碼、分析下載的代碼,并直接使用這些代碼連接機(jī)智云。同時(shí),我們還將討論如何移植HAL庫和標(biāo)準(zhǔn)庫以實(shí)現(xiàn)與機(jī)智云的兼容,幫助開發(fā)者更高效地完成項(xiàng)目的云平臺(tái)接入。
代碼下載
注意:此時(shí)手機(jī)app端的該設(shè)備為網(wǎng)頁端的虛擬設(shè)備僅僅是作為調(diào)試UI使用。之后移植完成代碼后,會(huì)與ESP8266連接,此時(shí)會(huì)出現(xiàn)一個(gè)新的設(shè)備信息來控制MCU,確認(rèn)后,就可以去生成代碼了。


點(diǎn)擊MCU開發(fā),選擇硬件平臺(tái)。
首先,確認(rèn)項(xiàng)目的開發(fā)方式是標(biāo)準(zhǔn)庫還是HAL 庫,如果是標(biāo)準(zhǔn)庫,只能選擇其他平臺(tái)。我使用的是HAL庫,同時(shí)也是F1x的板子,所以我選擇F103C8。輸入PS碼后即可點(diǎn)擊生成項(xiàng)目代碼。生成后下載下來使用即可!


后面如果需要加其他數(shù)據(jù)或者需要控制其他東西的話都是需要重新生成代碼的!
分析下載下來的代碼
下載下來后我們先簡單觀察里面的代碼的基本功能和配置:我們打開下載下來的代碼如果是F103C8型號(hào)就是可以直接使用的,如果不是我后面也會(huì)詳細(xì)說移植步驟!
我們打開里面的CubeMX工程可以發(fā)現(xiàn):使用機(jī)智云需要一個(gè)定時(shí)器ms級(jí)別的中斷和兩個(gè)串口,一個(gè)打印信息,一個(gè)連接esp8266,還有兩個(gè)按鍵(非必要),然后我們點(diǎn)開keil工程,查看main函數(shù)里面到底有什么,使用了什么:
/* Initialize interrupts */ MX_NVIC_Init();//中斷優(yōu)先級(jí)配置 /* USER CODE BEGIN 2 */ timerInit();//開啟定時(shí)器中斷 uartInit();//開啟串口2接收中斷 userInit();//初始化數(shù)據(jù)(比如,LED) gizwitsInit();//機(jī)智云初始化 keyInit();//按鍵初始化
GIZWITS_LOG("MCU Init Success , SoftVersion = %s\r\n",SOFTWARE_VERSION);//打印數(shù)據(jù) /* USER CODE END 2 */#ifdefOTA_ENABLE Pro_D2W_Ask_Module_Reboot();#endif /* Infinite loop */ /* USER CODE BEGIN WHILE */ while(1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ userHandle();//數(shù)據(jù)上傳 gizwitsHandle((dataPoint_t *)¤tDataPoint);//任務(wù)處理(比如:開關(guān)LED) } /* USER CODE END 3 */AI寫代碼
我們可以使用CH340連接串口1,esp8266連接串口2,查看按鍵的打印信息:

發(fā)現(xiàn)按鍵設(shè)置長短按,分別用來設(shè)置esp8266的工作模式,移植后的代碼的串口發(fā)送函數(shù)已經(jīng)包裝成了GIZWITS_LOG
想要熟悉使用機(jī)智云代碼就必須會(huì)使用兩個(gè)函數(shù):
userHandle();//數(shù)據(jù)上傳
gizwitsHandle((dataPoint_t *)¤tDataPoint);//任務(wù)處理(比如:開關(guān)LED)
AI寫代碼
userHandle();//數(shù)據(jù)上傳


gizwitsHandle((dataPoint_t *)¤tDataPoint);//任務(wù)處理(比如:開關(guān)LED):點(diǎn)擊跳轉(zhuǎn)定義


點(diǎn)擊進(jìn)入箭頭這個(gè)函數(shù):


基本了解了代碼的最基本的功能后,后續(xù)移植也會(huì)更得心應(yīng)手。
直接使用下載下來的代碼
4.1、修改代碼點(diǎn)亮LED
下載的代碼中只定義了一個(gè)定時(shí)器、兩個(gè)串口、兩個(gè)按鍵,其他就沒有配置了,我們這里自己個(gè)他配置一個(gè)LED的GPIO口,用于模擬燈:
修改1:


staticvoidMX_GPIO_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin : KEY1_Pin */ GPIO_InitStruct.Pin=KEY1_Pin; GPIO_InitStruct.Mode=GPIO_MODE_INPUT; GPIO_InitStruct.Pull=GPIO_PULLUP; HAL_GPIO_Init(KEY1_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : KEY2_Pin */ GPIO_InitStruct.Pin=KEY2_Pin; GPIO_InitStruct.Mode=GPIO_MODE_INPUT; GPIO_InitStruct.Pull=GPIO_PULLUP; HAL_GPIO_Init(KEY2_GPIO_Port, &GPIO_InitStruct);
//自己添加的GPIO口初始化,用于驅(qū)動(dòng)LED GPIO_InitStruct.Pin=GPIO_PIN_9; GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull=GPIO_PULLUP; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);}AI寫代碼
修改2:


連接機(jī)智云平臺(tái)

然后按照要求連接號(hào)硬件和LED,上電試著連接機(jī)智云,先長按Key2進(jìn)入airlink模式,然后使用手機(jī)打開機(jī)智云點(diǎn)擊右上角的+,然后點(diǎn)擊一鍵配網(wǎng)
等待配對(duì)成功后,就可以使用機(jī)智云控制LED開關(guān)了。




連接機(jī)智云串口打印信息


HAL庫移植機(jī)智云
前面我們已經(jīng)熟悉了下載的代碼的最基本需求:一個(gè)串口打印信息,一個(gè)串口連接esp8266,一個(gè)定時(shí)器ms級(jí)別中斷,兩個(gè)按鍵(非必要),那么我們進(jìn)行移植之前就得先得到一個(gè)已經(jīng)配置好的keil工程
Keil工程的生成
前面我們已經(jīng)熟悉了機(jī)智云代碼的最基本的需求,所以我們移植之前的需要得到一個(gè)符合條件的Keil工程,一個(gè)串口打印信息(串口1,115200bits/s),一個(gè)串口連接esp8266(串口2,9600bits/s),一個(gè)定時(shí)器實(shí)現(xiàn)ms級(jí)別中斷(定時(shí)器2),兩個(gè)按鍵(非必須),需要移植的代碼中配置好的就是串口1、串口2,定時(shí)器2,如果我們想要使用其他的外設(shè),我們就需要修改機(jī)智云代碼中的句柄,比如我們想要串口1連接esp8266,串口2打印信息,定時(shí)器3實(shí)現(xiàn)中斷,我們?cè)跈C(jī)智云代碼中需要的修改的地方:huart1和huart2互換地方,htim2修改為htim3,以此類推。
我們這里就不隨便換他的外設(shè)配置了,就按照它的來配置,最快把這個(gè)機(jī)智云物聯(lián)網(wǎng)平臺(tái)使用起來:


打開外部高速時(shí)鐘:


配置時(shí)鐘頻率:


配置定時(shí)器二:


別忘記了打開定時(shí)器中斷:


配置串口1負(fù)責(zé)打印信息(115200bits/s):


配置串口二(9600bits/s):


一樣別忘記打開中斷:


配置點(diǎn)燈GPIO口:


最后生成工程即可:




-
STM32
+關(guān)注
關(guān)注
2305文章
11120瀏覽量
371148 -
機(jī)智云
+關(guān)注
關(guān)注
3文章
629瀏覽量
27631 -
HAL
+關(guān)注
關(guān)注
2文章
73瀏覽量
13549
發(fā)布評(píng)論請(qǐng)先 登錄
【HAL庫每天一例】第063例:WIFI-ESP8266
機(jī)智云自動(dòng)生成工程移植STM32CubeMX
ESP8266-12F模塊接入云案例
STM32F103+ESP8266使用工程模板接入機(jī)智云的過程
基于STM32與esp8266機(jī)智云app聯(lián)網(wǎng)總結(jié)
從5方面描述STM32F407+ESP8266連接機(jī)智云過程
機(jī)智云官方生成的MCU代碼(hal庫)移植為STM32標(biāo)準(zhǔn)庫教程
STM32通過ESP8266利用機(jī)智云平臺(tái)實(shí)現(xiàn)手機(jī)遠(yuǎn)程操作
正點(diǎn)原子STM32F103+ESP8266使用工程模板接入機(jī)智云的詳細(xì)步驟
教程:ESP8266接入機(jī)智云,成功實(shí)現(xiàn)代碼移植
基于STM32 HAL庫與標(biāo)準(zhǔn)庫的ESP8266接入機(jī)智云方案(一)

基于STM32 HAL庫與標(biāo)準(zhǔn)庫的esp8266接入機(jī)智云方案(二)
評(píng)論