基于STM32 HAL库与标准库的esp8266接入机智云方案(二)

描述


 

在《基于STM32HAL库与标准库的esp8266接入机智云方案(一)》中,我们详细介绍了硬件连接和机智云客户端的创建。本篇将重点讲解如何下载代码、分析下载的代码,并直接使用这些代码连接机智云。同时,我们还将讨论如何移植HAL库和标准库以实现与机智云的兼容,帮助开发者更高效地完成项目的云平台接入。


 


代码下载STM32


 

注意:此时手机app端的该设备为网页端的虚拟设备仅仅是作为调试UI使用。之后移植完成代码后,会与ESP8266连接,此时会出现一个新的设备信息来控制MCU,确认后,就可以去生成代码了。


 




STM32STM32


 

点击MCU开发,选择硬件平台。


 

首先,确认项目的开发方式是标准库还是HAL 库,如果是标准库,只能选择其他平台。我使用的是HAL库,同时也是F1x的板子,所以我选择F103C8。输入PS码后即可点击生成项目代码。生成后下载下来使用即可!


 




STM32STM32

后面如果需要加其他数据或者需要控制其他东西的话都是需要重新生成代码的!


 


分析下载下来的代码STM32


 

下载下来后我们先简单观察里面的代码的基本功能和配置:我们打开下载下来的代码如果是F103C8型号就是可以直接使用的,如果不是我后面也会详细说移植步骤!


 

我们打开里面的CubeMX工程可以发现:使用机智云需要一个定时器ms级别的中断和两个串口,一个打印信息,一个连接esp8266,还有两个按键(非必要),然后我们点开keil工程,查看main函数里面到底有什么,使用了什么:


 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  


/* Initialize interrupts */    MX_NVIC_Init();//中断优先级配置     /* USER CODE BEGIN 2 */    timerInit();//开启定时器中断    uartInit();//开启串口2接收中断     userInit();//初始化数据(比如,LED)    gizwitsInit();//机智云初始化    keyInit();//按键初始化
    GIZWITS_LOG("MCU Init Success , SoftVersion = %s\r\n",SOFTWARE_VERSION);//打印数据    /* USER CODE END 2 */#ifdef OTA_ENABLE        Pro_D2W_Ask_Module_Reboot();#endif    /* Infinite loop */    /* USER CODE BEGIN WHILE */    while (1)    {    /* USER CODE END WHILE */     /* USER CODE BEGIN 3 */        userHandle();//数据上传        gizwitsHandle((dataPoint_t *)¤tDataPoint);//任务处理(比如:开关LED)    }    /* USER CODE END 3 */AI写代码


 

我们可以使用CH340连接串口1,esp8266连接串口2,查看按键的打印信息:


 

STM32


 

发现按键设置长短按,分别用来设置esp8266的工作模式,移植后的代码的串口发送函数已经包装成了GIZWITS_LOG


 

想要熟悉使用机智云代码就必须会使用两个函数:


 

userHandle();//数据上传

 

 

gizwitsHandle((dataPoint_t *)¤tDataPoint);//任务处理(比如:开关LED)

 

 

AI写代码


 

userHandle();//数据上传


 





STM32STM32

gizwitsHandle((dataPoint_t *)¤tDataPoint);//任务处理(比如:开关LED):点击跳转定义


 




STM32STM32

点击进入箭头这个函数:


 




STM32STM32


 

基本了解了代码的最基本的功能后,后续移植也会更得心应手。


 

直接使用下载下来的代码STM32


 

4.1、修改代码点亮LED


 

下载的代码中只定义了一个定时器、两个串口、两个按键,其他就没有配置了,我们这里自己个他配置一个LED的GPIO口,用于模拟灯:


 

修改1:


 




STM32STM32

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  


static void MX_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口初始化,用于驱动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:


 




STM32STM32


 


 

连接机智云平台

STM32


 

然后按照要求连接号硬件和LED,上电试着连接机智云,先长按Key2进入airlink模式,然后使用手机打开机智云点击右上角的+,然后点击一键配网

等待配对成功后,就可以使用机智云控制LED开关了。


 




STM32STM32


STM32STM32

连接机智云串口打印信息


 




STM32STM32


 


HAL库移植机智云STM32


 

前面我们已经熟悉了下载的代码的最基本需求:一个串口打印信息,一个串口连接esp8266,一个定时器ms级别中断,两个按键(非必要),那么我们进行移植之前就得先得到一个已经配置好的keil工程


 


Keil工程的生成STM32


 

前面我们已经熟悉了机智云代码的最基本的需求,所以我们移植之前的需要得到一个符合条件的Keil工程,一个串口打印信息(串口1,115200bits/s),一个串口连接esp8266(串口2,9600bits/s),一个定时器实现ms级别中断(定时器2),两个按键(非必须),需要移植的代码中配置好的就是串口1、串口2,定时器2,如果我们想要使用其他的外设,我们就需要修改机智云代码中的句柄,比如我们想要串口1连接esp8266,串口2打印信息,定时器3实现中断,我们在机智云代码中需要的修改的地方:huart1和huart2互换地方,htim2修改为htim3,以此类推。


 

我们这里就不随便换他的外设配置了,就按照它的来配置,最快把这个机智云物联网平台使用起来:


 




STM32STM32

打开外部高速时钟:


 




STM32STM32

配置时钟频率:


 




STM32STM32

配置定时器二:


 




STM32STM32

别忘记了打开定时器中断:


 




STM32STM32

配置串口1负责打印信息(115200bits/s):


 




STM32STM32

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


 




STM32STM32

一样别忘记打开中断:


 




STM32STM32

配置点灯GPIO口:


 




STM32STM32

最后生成工程即可:


 




STM32STM32


STM32STM32


 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分