当前位置: 首页 > news >正文

南通企业网站怎么建设云南凡科建站

南通企业网站怎么建设,云南凡科建站,python的网站开发,杭州产品设计公司排行1.配置stm32cubemx 使用串口二接收esp8266的数据#xff0c;单片机接收#xff0c;使用串口1将数据发送给串口助手 串口2波特率设置74880#xff0c;串口1设置115200 在初始化的时候需要将复位引脚拉低20ms,然后再拉高20ms, 设置GPIOB的输出模式 对PB12做输出处理 2.…1.配置stm32cubemx 使用串口二接收esp8266的数据单片机接收使用串口1将数据发送给串口助手 串口2波特率设置74880串口1设置115200 在初始化的时候需要将复位引脚拉低20ms,然后再拉高20ms, 设置GPIOB的输出模式 对PB12做输出处理 2.esp8266初始化 需要将复位引脚拉低20ms,再拉高20ms esp8266初始化化的时候有信息我们可以通过串口2获取信息然后串口1输出 需要自己实现fputc 我们发现下面有乱码应该怎么处理这里会涉及到波特率的转换 3.波特率转换 当我们遇到csum 0xde需要转换波特率 先处理波特率转换之前的数据先打印到串口1 void esp8266_response(const char*msg,uint32_t timeout) {uint32_t CurtickHAL_GetTick();//获取当前时间uint8_t data;uint8_t i0;while(1){if(HAL_GetTick()-Curticktimeout)//如果超时2s就breakbreak;if(HAL_UART_Receive(huart2,(uint8_t*)data,1,10)HAL_TIMEOUT)//如果10ms没收到esp8266发给单片机的数据就返回HAL_TIMEOUTcontinue; //如果初始化成功不会HAL_TIMEOUT就不continue;printf(%c,data); //单片机把串口2的数据一个字节一个字节读到data中然后通过printf打印到串口1 //这里串口2的波特率为74880if(datamsg[i]) //chksum 0xde\r\n //匹配到的话就是初始化成功{i;if(istrlen(msg)){break;}}else //重新匹配{ i0;}}}波特率转换需要转换波特率为115200. //直接复制uart中的 void esp8266_setbaud(uint32_t baud) {huart2.Instance USART2;huart2.Init.BaudRate baud;//需要传参修改需要的波特率huart2.Init.WordLength UART_WORDLENGTH_8B;huart2.Init.StopBits UART_STOPBITS_1;huart2.Init.Parity UART_PARITY_NONE;huart2.Init.Mode UART_MODE_TX_RX;huart2.Init.HwFlowCtl UART_HWCONTROL_NONE;huart2.Init.OverSampling UART_OVERSAMPLING_16;HAL_UART_Init(huart2);} 这里的ready只剩下了eady,这是因为串口涉及到硬件串口转换很快将数据给你放到data,printf还没来得及处理已经串口下次转换了所以就会覆盖所以我们将串口转换的值放到缓冲区。然后统一输出到串口1 缓冲区及下标 接下来需要将串口2的波特率转换为115200 void esp8266_setbaud(uint32_t baud) {huart2.Instance USART2;huart2.Init.BaudRate baud;huart2.Init.WordLength UART_WORDLENGTH_8B;huart2.Init.StopBits UART_STOPBITS_1;huart2.Init.Parity UART_PARITY_NONE;huart2.Init.Mode UART_MODE_TX_RX;huart2.Init.HwFlowCtl UART_HWCONTROL_NONE;huart2.Init.OverSampling UART_OVERSAMPLING_16;HAL_UART_Init(huart2);} 4.连接wifi 使用指令即可 void esp8266_link_wifi(const char*name,const char*password) {char buffer[128];sprintf(buffer,ATCWJAP\%s\,\%s\,name,password);//构建指令字符串HAL_UART_Transmit(huart2,(uint8_t*)buffer,strlen(buffer),HAL_MAX_DELAY);//向esp8266串口2发送指令字符串HAL_UART_Transmit(huart2,(uint8_t*)\r\n,2,HAL_MAX_DELAY);} 根据esp8266_response(const char*msg,uint32_t timeout)返回值判断是否发生成功修改esp8266_response函数 uint8_t esp8266_response(const char*msg,uint32_t timeout) {uint32_t CurtickHAL_GetTick();//获取当前时间uint8_t data;uint8_t i0;while(1){if(HAL_GetTick()-Curticktimeout)//如果超时2s就breakreturn 0;if(HAL_UART_Receive(huart2,(uint8_t*)data,1,10)HAL_TIMEOUT)//如果10ms没收到esp8266发给单片机的数据就返回HAL_TIMEOUTcontinue; //如果初始化成功不会HAL_TIMEOUT就不continue;//printf(%c,data); //单片机把串口2的数据一个字节一个字节读到data中然后通过printf打印到串口1 //这里串口2的波特率为74880buffer[num]data; if(datamsg[i]) //chksum 0xde\r\n //匹配到的话就是初始化成功{i;if(istrlen(msg)){return 1; //匹配成功}}else //重新匹配{ i0;}}}void esp8266_link_wifi(const char*name,const char*password) {char buffer[512];sprintf(buffer,ATCWJAP\%s\,\%s\,name,password);HAL_UART_Transmit(huart2,(uint8_t*)buffer,strlen(buffer),HAL_MAX_DELAY);HAL_UART_Transmit(huart2,(uint8_t*)\r\n,2,HAL_MAX_DELAY);if(esp8266_response(buffer,2000))//esp8266串口收到{printf(%s,buffer);}else //发送失败{printf(%s,buffer);printf(connect fail);}memset(buffer,0,512);//清空缓冲区}esp8266.c #include esp8266.h #include stdio.h #include string.h extern UART_HandleTypeDef huart2; extern uint8_t buffer[512]; extern uint16_t num; void esp8266_init(void) {HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET);HAL_Delay(20);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET);HAL_Delay(20);esp8266_response(chksum 0xde\r\n,2000);HAL_Delay(50);esp8266_setbaud(115200);esp8266_response(ready\r\n,1000);printf(%s,buffer);memset(buffer,0,512);}uint8_t esp8266_response(const char*msg,uint32_t timeout) {uint32_t CurtickHAL_GetTick();//获取当前时间uint8_t data;uint8_t i0;while(1){if(HAL_GetTick()-Curticktimeout)//如果超时2s就breakreturn 0;if(HAL_UART_Receive(huart2,(uint8_t*)data,1,10)HAL_TIMEOUT)//如果10ms没收到esp8266发给单片机的数据就返回HAL_TIMEOUTcontinue; //如果初始化成功不会HAL_TIMEOUT就不continue;//printf(%c,data); //单片机把串口2的数据一个字节一个字节读到data中然后通过printf打印到串口1 //这里串口2的波特率为74880buffer[num]data; if(datamsg[i]) //chksum 0xde\r\n //匹配到的话就是初始化成功{i;if(istrlen(msg)){return 1;}}else //重新匹配{ i0;}}}void esp8266_setbaud(uint32_t baud) {huart2.Instance USART2;huart2.Init.BaudRate baud;huart2.Init.WordLength UART_WORDLENGTH_8B;huart2.Init.StopBits UART_STOPBITS_1;huart2.Init.Parity UART_PARITY_NONE;huart2.Init.Mode UART_MODE_TX_RX;huart2.Init.HwFlowCtl UART_HWCONTROL_NONE;huart2.Init.OverSampling UART_OVERSAMPLING_16;HAL_UART_Init(huart2);} void esp8266_link_wifi(const char*name,const char*password) {char buffer[512];sprintf(buffer,ATCWJAP\%s\,\%s\,name,password);HAL_UART_Transmit(huart2,(uint8_t*)buffer,strlen(buffer),HAL_MAX_DELAY);HAL_UART_Transmit(huart2,(uint8_t*)\r\n,2,HAL_MAX_DELAY);if(esp8266_response(buffer,2000))//esp8266串口收到{printf(%s,buffer);}else{printf(%s,buffer);printf(connect fail);}memset(buffer,0,512); //清空缓冲区}esp8266.h #ifndef _ESP8266_H_ #define _ESP8266_H_ #include stm32f4xx_hal.h void esp8266_init(void); uint8_t esp8266_response(const char*msg,uint32_t timeout); void esp8266_setbaud(uint32_t baud); void esp8266_link_wifi(const char*name,const char*password); #endif
http://www.hkea.cn/news/14294289/

相关文章:

  • 南昌网站seo烟台网站建设推荐企汇互联见效付款
  • 广州市品牌网站建设公司用vs做html网站
  • 公司展示网站制作深圳市建设混凝土投标网站
  • 做外贸生意是不是需要建网站关键词排名推广方法
  • 专业的英文网站建设计算机网络技术是干嘛的
  • 长沙 网站优化如何把网站上传到空间
  • 做h5页面的网站沈阳男科医院排名前十
  • 做简历网站有什么中国建设银行官网网站
  • 深圳网站建设新闻公司网站二维码怎么做的
  • 建网站的大公司大型商城网站建设方案
  • 百度自助建站官网网站调用时间
  • 网站建设步骤 教 程医院建设网站与托管
  • 陕西营销型手机网站2023很有可能再次封城吗
  • 用哪个程序做网站收录好拓者设计吧app
  • 编辑网站的软件手机软件昆明网站代理
  • 电子商务网站建设源码solaris.wordpress
  • wap网站快速开发网站建设自己在家接单
  • 设一个网站需要多少钱gulf oil wordpress
  • 公司网站建设精品萧涵wordpress主题
  • 营销型制作网站公司湖南省建设厅网站官网
  • 做网站是用wordpress还是DW游戏工作室
  • 自己视频怎么上传网站php网站怎么做伪静态
  • 领导交给你一个网站你该怎么做杭州企业网站制作加驰牛科技
  • 学校网站页面设计网站快照怎么做
  • c#做的网站怎么上传教研组网站的建设
  • 廊坊企业网站团队一个服务器可以做几个网站
  • 三网合一网站源码下载英才网
  • 织梦网站地图怎么做xml公司企业邮箱怎么填写
  • 福州网站推广公司长沙市住房和城乡建设部网站
  • 东莞网站高端建设电商网站开发缓存