STM32-笔记29-蓝牙遥控插座项目

一、实验前期准备

手机通过蓝牙模块远程遥控风扇。(插座的原理就是继电器,所以控制继电器就是控制插座电源)

二、项目实现

复制项目文件夹32-蓝牙模块实现,重命名33-蓝牙遥控插座项目

找到一个继电器项目,把继电器复制到文件夹内

如下图所示:

重命名文件为plugin

打开项目,加载文件

main.c

cpp 复制代码
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "bluetooth.h"
#include "plugin.h"

int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
    led_init();//初始化led灯
    bt_init(115200);
    uart1_init(115200);
    plugin_init();
    printf("hello word!\r\n");
    
    while(1)
    { 

    }
}

plugin.c

cpp 复制代码
#include "plugin.h"
#include "sys.h"//关于时钟的头文件

//初始化GPIO函数
void plugin_init(void)
{
    GPIO_InitTypeDef gpio_initstruct;//定义一个结构体gpio_initstruct
    //打开时钟
    __HAL_RCC_GPIOB_CLK_ENABLE();
    //调用GPIO初始化函数
    gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;//结构体函数的四种类型,引脚模式、引脚、引脚上拉下拉、引脚速度
    gpio_initstruct.Pin = GPIO_PIN_6;
    gpio_initstruct.Pull = GPIO_PULLUP;
    gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;
    
    HAL_GPIO_Init(GPIOB,&gpio_initstruct);
    //关闭继电器
    plugin_OFF();
}
//打开继电器的函数
void plugin_ON(void)
{
    //把GPIO口拉低,给一个低电平,打开继电器
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);
}
//关闭继电器的函数
void plugin_OFF(void)
{
     //把GPIO口拉高,给一个高电平,关闭继电器
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET);
}
uint8_t plugin_status_get(void)
{
    return (uint8_t)HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7);//返回这个引脚的状态//为什么使用强转
    //因为:HAL_GPIO_ReadPin();函数使用的是GPIO_PinState;结构体类型,而这个函数使用的是uint8_t类型
}

plugin.h

cpp 复制代码
#ifndef __PLUGIN_H__
#define __PLUGIN_H__

#include "stdint.h"

#define PLUGIN_STATUS_ON 0  //继电器低电平触发
#define PLUGIN_STATUS_OFF 1

void plugin_init(void);
void plugin_ON(void);
void plugin_OFF(void);
uint8_t plugin_status_get(void);

#endif
相关推荐
Zhao-Jichao7 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李8 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga9 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd9 小时前
秋招学习笔记 day106
笔记·学习
小李不想当小白11 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
欢欢李11 小时前
【LTE L3 笔记 04】LTE帧结构
笔记·无线通信·物理层·lte·空口协议
Zhao-Jichao13 小时前
AI Prompting for Everyone 课程笔记 - P20 实验与期末项目 Lab and Final Project
前端·人工智能·笔记
Z21-X14 小时前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生
坤坤子吖14 小时前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习
Rabitebla14 小时前
【Linux学习笔记】进程篇(九):进程的创建与退出——fork、写时拷贝与退出码
linux·c++·笔记·学习