WIFI
通过上几节的分析,对STM32常用外设的配置有了基本概念,可以开始本文研究,本文并不是具体分析WIFI模块通讯机理,仅是对 正点原子的代码例程架构的详细剖析。
阅读完本文,要能回答以下问题:
- 简述单片机配置WIFI模块的主程序流程
- 解释WIFI模块的三种工作模式STA+AP、STA、AP都是什么?
- 单片机是通过发送AT指令来操作WIFI模块,简述发送AT指令的代码流程
- 如果将WIFI模块配置成STA模式,简述STA配置代码流程
- 配置好WIFI模块后,要与远端进行收发数据,收发数据的协议有UDP或者TCP(客户端/服务器),这些都是什么?
- 如果将WIFI模块配置成TCP客户端与远端通信,简述配置成TCP客户端的代码流程?简述发送数据的代码流程?
- STA/AP与TCP/UDP是两类不同层次的概念,简单区分一下。
WIFI测试的代码架构剖析
步骤1:wifi模块的主函数流程
1、阐述例程主函数代码结构?首先是单片机串口初始化,然后是其余用到的外设初始化,最后是WIFI模块初始化,之后就是测试WIFI模块收发数据。详细代码如下:
int main(void)
{
u8 key,fontok=0;
//基本的外设初始化
Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhz
HAL_Init(); //HAL库初始化
delay_init(180); //初始化延时函数
uart_init(115200); //初始化USART1
usart3_init(115200); //初始化USART3
//下面就是些其他外设的初始化配置了,以后再来学习。
usmart_dev.init(90); //³õʼ»¯usmart
LED_Init(); //³õʼ»¯LED
KEY_Init(); //³õʼ»¯°´¼ü
SDRAM_Init(); //SDRAM³õʼ»¯
LCD_Init(); //LCD³õʼ»¯
W25QXX_Init(); //³õʼ»¯W25Q256
tp_dev.init(); //³õʼ»¯´¥ÃþÆÁ
my_mem_init(SRAMIN); //³õʼ»¯ÄÚ²¿ÄÚ´æ³Ø
my_mem_init(SRAMEX); //³õʼ»¯ÍⲿSDRAMÄÚ´æ³Ø
my_mem_init(SRAMCCM); //³õʼ»¯ÄÚ²¿CCMÄÚ´æ³Ø
exfuns_init(); //ΪfatfsÏà¹Ø±äÁ¿ÉêÇëÄÚ´æ
f_mount(fs[0],"0:",1); //¹ÒÔØSD¿¨
f_mount(fs[1],"1:",1); //¹ÒÔØSPI FLASH.
key=KEY_Scan(0);
if((key==KEY0_PRES)&&(tp_dev.touchtype&0X80)==0) //Ç¿ÖÆУ׼£¬µç×èÆÁ²ÅÐèҪУ׼
{
LCD_Clear(WHITE); //ÇåÆÁ
TP_Adjust(); //ÆÁĻУ׼
TP_Save_Adjdata();
LCD_Clear(WHITE); //ÇåÆÁ
}
fontok=font_init(); //¼ì²é×Ö¿âÊÇ·ñOK
if(fontok||key==KEY1_PRES)//ÐèÒª¸üÐÂ×Ö¿â
{
LCD_Clear(WHITE); //ÇåÆÁ
POINT_COLOR=RED; //ÉèÖÃ×ÖÌåΪºìÉ«
LCD_ShowString(60,50,200,16,16,"ALIENTEK STM32");
while(SD_Init()) //¼ì²âSD¿¨
{
LCD_ShowString(60,70,200,16,16,"SD Card Failed!");
delay_ms(200);
LCD_Fill(60,70,200+60,70+16,WHITE);
delay_ms(200);
}
LCD_ShowString(60,70,200,16,16,"SD Card OK"