完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
要求:通过手机上的机智云通用APP,点亮开发板载LED0,LED1
摘要 硬件组成:STM32F407ZGT6 + esp8266(乐鑫) 软件APP:机智云开发都者中心下载的通用APP演示; XCOM串口调试助手; Keil V5; 调试过程详解: 注意事项: 使用机智云后家的后续广告 图:一、硬件组成全图所示:( 硬件福:开发板STM32F407ZGT6+ESP8266) 该开发板IO口配置: [tr]名称管脚名称备注[/tr]
[tr]STM32F407ESP8266备注[/tr]
二、下载通用APP DEMO: 下载页面: https:// download.gizwits.com/zh-cn/p/98/99 根据自己的手机系统,选择下载相应的APP,如下图所示: 3.安装、注册、登陆后如下图所示: 三、调试过程详解: 创建数据点 生成MCU工程 下载MCU工程并根据开发板原理图修改工程,修改的地方如程序中红色加注释的部分 main.c中加入红色标出的GPIO初始化代码 static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO 端口时钟使能 */ __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); //GPIOF CLK Enable:用于控制LED /*配置GPIO管脚:KEY2_Pin KEY1_Pin */ GPIO_InitStruct.Pin = KEY2_Pin|KEY1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*配置GPIO引脚输出电平*/ HAL_GPIO_WritePin(GPIOE, LED1_Pin|LED0_Pin, GPIO_PIN_SET); /*配置GPIO管脚:LED1_Pin LED0_Pin */ GPIO_InitStruct.Pin = LED1_Pin|LED0_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); } 复制代码 main.h头文件中增加以下内容 /* USER CODE BEGIN Privatedefines / #define LED1_Pin GPIO_PIN_9 #define LED1_GPIO_Port GPIOF #define LED0_Pin GPIO_PIN_10 #define LED0_GPIO_Port GPIOF / USER CODE END Private defined */ 复制代码 gizwits_product.c中需要用户添加设备上电状态代码如下图所示 void userInit (void) { memset((uint8_t*) ¤tDataPoint, 0, sizeof(dataPoint_t)); /** 警告 !!!数据点变量初始化,必须在数据范围内**/ currentDataPoint.valueValve = 0; currentDataPoint.valueLED0 = 1; currentDataPoint.valueLED1 = 1; currentDataPoint.valueState = 1; currentDataPoint.valueValue = 5; } 复制代码 gizwits_product.c中需要用户添加的代码如下图所示 int8_t gizwitsEventProcess(eventInfo_t *info, uint8_t *gizdata, uint32_t len) { uint8_t i = 0; dataPoint_t *dataPointPtr = (dataPoint_t *)gizdata; moduleStatusInfo_t *wifiData = (moduleStatusInfo_t *)gizdata; protocolTime_t *ptime = (protocolTime_t *)gizdata; #if MODULE_TYPE gprsInfo_t *gprsInfoData = (gprsInfo_t *)gizdata; #else moduleInfo_t *ptModuleInfo = (moduleInfo_t *)gizdata; #endif if((NULL == info) || (NULL == gizdata)) { return -1; } for(i=0; inum; i++) { switch(info->event ) { case EVENT_Valve: currentDataPoint.valueValve = dataPointPtr->valueValve; GIZWITS_LOG(“Evt: EVENT_Valve %d n”, currentDataPoint.valueValve); if(0x01 == currentDataPoint.valueValve) { //用户句柄 HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); //led1发光,没有阀,用灯替代 HAL_Delay(500); HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin); //led0发光没有阀,用灯替代 HAL_Delay(500); } else { //用户句柄 HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET); //单一led1 HAL_GPIO_WritePin(LED0_GPIO_Port,LED_Pin,GPIO_PIN_SET); //有led0 } break; case EVENT_LED0: currentDataPoint.valueLED0 = dataPointPtr->valueLED0; GIZWITS_LOG(“Evt: EVENT_LED0 %d n”, currentDataPoint.valueLED0); if(0x01 == currentDataPoint.valueLED0) { //用户句柄 HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET); //点亮led0 } else { //用户句柄 } break; case EVENT_LED1: currentDataPoint.valueLED1 = dataPointPtr->valueLED1; GIZWITS_LOG("Evt: EVENT_LED1 %d n", currentDataPoint.valueLED1); if(0x01 == currentDataPoint.valueLED1) { //user handle HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET); //点亮led1 } else { //user handle HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET); //灭掉led1 } break; case WIFI_SOFTAP: break; case WIFI_AIRLINK: break; case WIFI_STATION: break; case WIFI_CON_ROUTER: break; case WIFI_DISCON_ROUTER: break; case WIFI_CON_M2M: break; case WIFI_DISCON_M2M: break; case WIFI_RSSI: GIZWITS_LOG("RSSI %dn", wifiData->rssi); break; case TRANSPARENT_DATA: GIZWITS_LOG("TRANSPARENT_DATA n"); //user handle , Fetch data from [data] , size is [len] break; case WIFI_NTP: GIZWITS_LOG("WIFI_NTP : [%d-%d-%d %02d:%02d:%02d][%d] n",ptime->year,ptime->month,ptime->day,ptime->hour,ptime->minute,ptime->second,ptime->ntp); break; case MODULE_INFO: GIZWITS_LOG("MODULE INFO ...n"); #if MODULE_TYPE GIZWITS_LOG("GPRS MODULE ...n"); //Format By gprsInfo_t #else GIZWITS_LOG("WIF MODULE ...n"); //Format By moduleInfo_t GIZWITS_LOG("moduleType : [%d] n",ptModuleInfo->moduleType); #endif break; default: break; } 返回0; } 复制代码 4.程序烧录:使用FlyMCU进行程序烧录, 5.打开APP操作写操作 6.打开Xcom查看调试信息 四、注意事项: 正确开发板的UART2接口:本开发板中对应关系如下:UART2_TX:PA2,UART2_RX:PA3, 保证与ESP8266模块的管脚连接正确:V3.3(接开发板3.3V); GND(接开发板GND); TX(接开发板的PA3管脚); RX (接开发的PA2脚); 3.由于本次使用的ESP86是原来的智机云二代产品上的,可能的6正常联上机智云,故没有给ESP866烧写管,关于招烧写的内容,请参阅论坛的相关文档。 |
||
|
||
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:48 , Processed in 0.796398 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号