STM32F103WIFI程序C语言_第1页
STM32F103WIFI程序C语言_第2页
STM32F103WIFI程序C语言_第3页
STM32F103WIFI程序C语言_第4页
STM32F103WIFI程序C语言_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

kok电子竞技权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

kok电子竞技:文档简介

1、实用标准文案AP模式AP 的 SSID : AT+WAP=11BG,LAUVAN(SSID),CHIAP 的 KEY: : AT+WAKEY=WPA2PSK,AES,22222222AP 模式: AT+WMODE=APAP 作服务器时的端口号: AT+NETP=TCP,SERVER,6000,192.168.1.56AP 的 IP 及网关: AT+LANN=192.168.1.1,255.255.255.0 透传模式: AT+ENTM串口模式:/*名称 : 变量定义*/volatile uint8 UART3_RxBufUART3_RXBUF_SIZE; volatile uint8 UART

2、3_TxBufUART3_TXBUF_SIZE;volatile uint8 UART3RxFlag;volatile uint16 UART3_RxHead; volatile uint16 UART3_RxEnd;volatile uint8 UART3_RxFullFlag; volatile uint8 UART3_RxEmptyFlag;volatile uint8 UART3TxFlag;volatile uint16 UART3_TxHead;volatile uint16 UART3_TxEnd;volatile uint8 UART3_TxEmptyFlag;volatile

3、 uint8 UART3OverTime;volatile uint8 UART3OverFlag;volatile uint8 UART3RxCompTime; volatile uint8 UART3RxCompJudg;volatile uint8 UART3RxCompFlag;/ 接收标志/ 接收缓冲区读指针/ 接收缓冲区指针/ 接收缓冲区满标志/ 接收缓冲区空标志/ 发送标志/ 发送缓冲区空标志/ 超时时间/ 超时标志/ 串口接收完成时间/ 串口接收完成判断/ 串口接收完成标志volatile uint16 Uart3OverTime;/WIFI 相关参数volatile uint

4、8 WifiStatus=0;volatile uint8 IsWifiBusy;volatile uint32 Channel_Timer_Limit;/限时器精彩文档实用标准文案/volatile uint16 Dog_IsWifiBusy = DOG_ISGPRSBUSY;volatile uint16 Dog_IsWifiBusy = 0;volatile uint8 WifiSendBuf512;volatile uint8 WifiRecBuf512;volatile uint8 SetWifiParmFlag=0;volatile uint8 SetWifiUartParmFla

5、g=0;volatile uint8 Send2BTime=0;volatile uint8 WifiOnLinkFlag=0;volatile uint8 WifiSendStartTime=0;volatile uint8 WifiHeartbeatno=0; /Wifi 发送心跳次数volatile uint8 WifiSendEnterNetFlag=0; /Wifi发送登录帧标志 ivolatile uint8 WifiEtherNetFlag=0; / /* Function name:* Descriptions:* input parameters:* Output param

6、eters:* Returned value:STM_EVAL_USART3_Init串口 3 中断服务函数 无无无*/void STM_EVAL_USART3_Init(void)NVIC_InitTypeDef NVIC_InitStructure;嵌套优先级分组为 1/* Enable and set USART3 Interrupt to the 0 priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); / NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_In

7、itStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);* 初始化客户端 WifiPortIOSet*/ void WifiIOInit(void) 精彩文档实用标准文案GPIO_InitTypeDef GPIO_InitStructure;/RCC_AHB1PeriphClockCmd(RCC

8、_AHB1Periph_GPIOB , ENABLE);RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Pin= Reload;/20140731GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, Reload);RCC_APB2Per

9、iphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Pin = ResetTn; / 脚 20140731定义 Reload 输出脚定义 ResetTn 输出GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, ResetTn);RCC_APB2PeriphClo

10、ckCmd( RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin20140731= PWR_SW;/定义 PWR_SW输出脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA, PWR_SW);/* 名称: USART3_Wifi()* 功能: 初始化串口 3* 入口参数:* 出口

11、参数:*/void USART3_Wifi(void)GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* config USART2 clock */RCC_APB2Periph_GPIOB,/RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART3 |精彩文档实用标准文案ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Peri

12、ph_USART3, ENABLE);/* USART3 GPIO config */* Configure USART3 Tx (PB.10) as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);/* Configure USAR

13、T3 Rx (PB.11) as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);/* USART3 mode config */USART_InitStructure.USART_BaudRate = 115200;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_

14、InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No ;USART_InitStructure.USART_HardwareFlowControlUSART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART3, &USART_InitStructure);/* 使能串口 3 的发送和接收中断 *

15、/USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);USART_Cmd(USART3, ENABLE);STM_EVAL_USART3_Init(); / 中断初始化WifiIOInit(); /WIFI 控制脚的初始化 20140731/* Function name:* Descriptions:* input parameters:* Output parameters:* Returned value:USART3_IRQHandler串口 3 中断服务函数 无无无*/void USART3_IRQHandler(void) if(USART_

16、GetITStatus(USART3,USART_IT_RXNE) != RESET)精彩文档实用标准文案UART3RxCompJudg = VALID_FLAG;UART3RxCompTime = 0;Uart3OverTime = 0;if( UART3_RxFullFlag = 0)UART3_RxBufUART3_RxEnd+ = USART_ReceiveData(USART3); /* 存接收到的数据 */if(UART3_RxEnd = UART3_RXBUF_SIZE) UART3_RxEnd = 0;if(UART3_RxEnd = UART3_RxHead) UART3_R

17、xFullFlag = 1;UART3_RxEmptyFlag = 0;/USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);/* Function name:HandleRFSendData发送多个字节数据发送数据存储位置 发送数据个数 无* Descriptions:* input parameters: Buffer:* NByte:* Output parameters:* Returned value:*/void HandleWifiSendData(unsigned char *buffer,int bufferlen) while(buf

18、ferlen=0)USART_SendData(USART3, *buffer+);/ResetWdog();while (USART_GetFlagStatus(USART3, USART_FLAG_TC) = RESET); bufferlen-;/USART_Cmd(USART3, ENABLE);/* 名 称: HandleRFUartTimer()* 功 能: 处理读 UART1时间* 入口参数:精彩文档实用标准文案* 出口参数:*/void HandleWifiUartTimer(void)if(UART3RxCompJudg = VALID_FLAG) / 接收是否完成判断 if

19、(+UART3RxCompTime = UART3_COMP_TIME) / 判断接收中断之间超时 UART3RxCompTime = 0;UART3RxCompJudg = 0; UART3RxCompFlag = VALID_FLAG;/NoReDataTime =0; elseUart3OverTime+;/* 名称: Uart3ReadBytes()* 功能: 读取串口 2 字符串* 入口参数: *pBuf: 读取数据存储区* 出口参数:uint16 Uart3ReadBytes(uint8 *pBuf) uint16 nEnd = 0;uint16 Size = 0;/ 串口 0 接

20、收数据缓冲区不为空/ 中断可能改变此值/end headif(UART3_RxEmptyFlag = 0) nEnd = UART3_RxEnd;UART3_RxFullFlag = 0;if(UART3_RxHead endSize = UART3_RXBUF_SIZE + nEnd - UART3_RxHead;memcpy(pBuf,(uint8 *)&UART3_RxBuf0 + UART3_RxHead,UART3_RXBUF_SIZE - UART3_RxHead);if(nEnd 0)memcpy(pBuf + UART3_RXBUF_SIZE - UART3_RxHead,(u

21、int8 *)&UART3_RxBuf0,nEnd);UART3_RxHead = nEnd;if(UART3_RxHead = UART3_RxEnd)UART3_RxEmptyFlag = 1;/ 接收数据缓冲区空elseSize = 0;memset(uint8*)&UART3_RxBuf0,0x00,512);return Size;/* 名称: GetWifiMode485Data()* 功能:读出接收的数据,取出完整的一。诺浇邮誃UF,* 入口参数:无* 出口参数:返回长度和数据 BUF。*/uint16 GetWifiMode485Data(void)uint16 loop,

22、temps,size;uint16 i,starti;uint8 temp1,temp2;uint16 datalen;memset(uint8*)&WifiRecBuf,0x00,512);size= Uart3ReadBytes(uint8*)WifiRecBuf);temps = size;i=0;while(WifiRecBufi!=0x68 & i=size)return 0;/ 错误格式信息starti = i;/point 0x68i += 7;精彩文档实用标准文案if(WifiRecBufi!=0x68)return 0;i+;/point ctrlcodei+;/point

23、len;temp1= WifiRecBufi;temp2= WifiRecBufi+1;/2013-09-05datalen = (uint16)(temp1 + temp2*256); i += 2;if(i+datalen = temps)return 0;i += datalen;/point csi+;/point 0x16if(WifiRecBufi != 0x16) return 0;size = datalen + 9; /head(9) + cs + 0x16 for(loop=0;loop2) Channel_Timer_Limit=100;Send2BTime=0;else

24、Channel_Timer_Limit=10;break;case Wifi_A: / 再发 a WifiSendBuf0=0x61; HandleWifiSendData(uint8*)&WifiSendBuf0, 1);Channel_Timer_Limit=100;break;default: / 开始发 AT 指令WifiATFrame(WifiStatus);Channel_Timer_Limit=100;break;/ 处理 Wifi 串口模式else if(SetWifiUartParmFlag=VALID_FLAG)&(Channel_Timer_Limit=0) GPIO_S

25、etBits(GPIOB, ResetTn);switch(WifiStatus)case Wifi_INIT: /先发 +if(WifiSendStartTime5)/ SendGprsEnterFrame(3);WifiSendStartTime=0; Channel_Timer_Limit=200; WifiSendEnterNetFlag=VALID_FLAG;精彩文档实用标准文案break;WifiSendEnterNetFlag=0;memset(uint8*)&WifiSendBuf0,0x2b,3);HandleWifiSendData(uint8*)WifiSendBuf,

26、1);Send2BTime+;if(Send2BTime2)Channel_Timer_Limit=100;Send2BTime=0;WifiSendStartTime+;elseChannel_Timer_Limit=10;break;case Wifi_A:/ 再发 aif(WifiSendStartTime5)/SendGprsEnterFrame(3);WifiSendStartTime=0;Channel_Timer_Limit=200;WifiSendEnterNetFlag=VALID_FLAG;break;WifiSendBuf0=0x61;HandleWifiSendData

27、(uint8*)WifiSendBuf, 1);Channel_Timer_Limit=100;WifiSendStartTime+;break;default: / 开始发 AT 指令WifiATFrame(WifiStatus);Channel_Timer_Limit=50;break;/Channel_Timer_Limit=100;/* 名称: HandleWifiData()* 功能:处理上行串口接收到的数据精彩文档实用标准文案* 入口参数:* 出口参数:*/void HandleWifiData(void)uint16 DataLen;GprsFrameType *pLCFrame

28、;if(SetWifiParmFlag=VALID_FLAG & WifiSendEnterNetFlag!=VALID_FLAG)DataLen = GetWifiATData();switch(WifiStatus)case Wifi_INIT:if(WifiRecBuf0=0x61)WifiStatus=Wifi_A;break;case Wifi_A:if(WifiRecBuf0=0x2b&WifiRecBuf1=0x6f&WifiRecBuf2=0x6b)if(SetWifiParmFlag!=0)WifiStatus=Wifi_STA;elseWifiStatus=Wifi_WSL

29、K;break;case Wifi_STA:if(WifiRecBuf0=0x2b&WifiRecBuf1=0x6f&WifiRecBuf2=0x6b)WifiStatus=Wifi_WSSSID;Channel_Timer_Limit=0;break;case Wifi_WSSSID:if(WifiRecBuf0=0x2b&WifiRecBuf1=0x6f&WifiRecBuf2=0x6b)WifiStatus=Wifi_WSKEY;Channel_Timer_Limit=0;break;case Wifi_WSKEY:if(WifiRecBuf0=0x2b&WifiRecBuf1=0x6f

30、&WifiRecBuf2=0x6b)WifiStatus=Wifi_WANN;精彩文档实用标准文案Channel_Timer_Limit=0; break;case Wifi_WANN:if(WifiRecBuf0=0x2b&WifiRecBuf1=0x6f&WifiRecBuf2=0x6b)WifiStatus=Wifi_NETP;Channel_Timer_Limit=0;break;case Wifi_NETP:if(WifiRecBuf0=0x2b&WifiRecBuf1=0x6f&WifiRecBuf2=0x6b)WifiStatus=Wifi_Reset;Channel_Timer

31、_Limit=0;break;default:break;if(DataLen10)if(UpTaskFrame.UpTaskFlag=VALID_FLAG)return;/DataLen = GetWifiMode485Data();/if(DataLen= 512) / 判断数 据return;if(CmpFrameIs(uint8 *)&WifiRecBuf0) = OK)帧格式 ( 对集中器本身的命令 )UpTaskFrame.UpTaskFlag=VALID_FLAG; pLCFrame = (GprsFrameType *)WifiRecBuf; HandleUpProtocolM

32、ain(pLCFrame,3);帧WifiOnLinkFlag= VALID_FLAG;WifiStatus=Wifi_INIT;SetWifiUartParmFlag=0;elseSetWifiParmFlag=0;if(UpTaskFrame.UpTaskFlag=VALID_FLAG)/处理数 据精彩文档实用标准文案return;DataLen = GetWifiMode485Data(); if(DataLen= 512) / return;if(CmpFrameIs(uint8 *)&WifiRecBuf0) = OK)式( 对集中器本身的命令 )/ 处理数据帧UpTaskFrame.UpTaskFlag=VALID_FLAG; pLCFrame = (GprsFrameType *)WifiRecBuf; HandleUpProtocolMain(pLCFrame,3); WifiOnLinkFlag= VALID_FLAG; WifiStatus=Wifi_INIT;SetWifiUartParmFlag=0;SetWifiParmFlag=0;精彩文档

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论