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,当继电器关闭时,你会听到点击D相反,输入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);