STM32精英板连接wifi,通过指令控制继电器
一、连线
我是用的wifi是正点原子官方的,在精英板上有留出wifi接口,直接插入即可
继电器的连接:
CH1-连接你设置好的管脚,我设置的是PB5
RGND 可以不用管
GND-GND
5V-3.3V或者5V
初始状态及继电器上的D1会亮
二、代码(主要讲继电器的)
- 对继电器初始化(寄存器版本的)在.c文件中
void relay_init(void){ RCC->APB2ENR|=1<<3; //使能PORTB时钟 //RCC->APB2ENR|=1<<6; //使能PORTE时钟 GPIOB->CRL&=0XFF0FFFFF; GPIOB->CRL|=0X00300000;//PB.5推挽输出 GPIOB->ODR|=1<<5; //PB.5 输出高 }
- 端口定义 在.h文件中
#define Relay PBout(5) // PB5
- 在main函数中添加初始化
- 找到wifi接收数组USART3_RX_BUF,写指令控制继电器
if(USART3_RX_STA&0x8000) { printf("USART3_RX_BUF=%s\r\n",USART3_RX_BUF);//向串口一打印数据,验证我们收到的数据 sprintf(a,"%s",USART3_RX_BUF);//把BUF里的数据送到a printf("a=%s",a);//打印a if(strstr((const char*)a,"open")) { Relay=1; printf("继电器打开"); } if(strstr((const char*)a,"close")) { Relay=0; printf("继电器关闭"); } USART3_RX_STA=0;//清空标志位 };
- 可以使用网络调试助手,进行测试
- 当我们输入close,继电器关闭,会听到咔嚓一下,同时D1会灭;反之输入open,继电器打开,也会 听到咔嚓一下,D1点亮
三、效果图
四、总结
其实继电器代码比较简单,我们可以把它看成一个小灯,只要我们给予高低电平就可以了。
标准库里面:
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
Hal库里面:
void HAL_GPIO_WritePin( GPIOx, GPIO_Pin, GPIO_PinState PinState){}
@arg GPIO_PIN_RESET: to clear the port pin
@arg GPIO_PIN_SET: to set the port pin
例如:HAL_GPIO_WritePin( GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_GPIO_WritePin( GPIOB, GPIO_PIN_5, GPIO_PIN_SET);