当前位置: 首页 > news >正文

STM32学习--3-5 光敏控制传感器控制蜂鸣器

接线图

 Buzzer.c

#include "stm32f10x.h"                  // Device header

void Buzzer_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&GPIO_InitStructure);
    
    GPIO_SetBits(GPIOB,GPIO_Pin_12); // 蜂鸣器低电平触发,开始置B12为高电平
}

void Buzzer_OFF(void)
{
    GPIO_SetBits(GPIOB,GPIO_Pin_12);
}

void Buzzer_ON(void)
{
    GPIO_ResetBits(GPIOB,GPIO_Pin_12);
}

void Buzzer_Turn(void)
{
    if (GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12) == 0)
    {
        GPIO_SetBits(GPIOB,GPIO_Pin_12);
    }
    else
    {
        GPIO_ResetBits(GPIOB,GPIO_Pin_12);
    }
}
 

  Buzzer.h

#ifndef __BUZZER_H
#define __BUZZER_H

void Buzzer_Init(void);
void Buzzer_ON(void);
void Buzzer_OFF(void);
void Buzzer_Turn(void);

#endif
 

 LightSensor.c

#include "stm32f10x.h"                  // Device header

void LightSensor_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); // 开启时钟
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;   // 光敏传感器在PB13
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&GPIO_InitStructure);
}

uint8_t LightSensor_Get(void)
{
    return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13); //返回光敏传感器输入
    
}
 

  LightSensor.h

#ifndef __LIGHTSENSOR_H
#define __LIGHTSENSOR_H

void LightSensor_Init(void);
uint8_t LightSensor_Get(void);

#endif
 

 main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "Buzzer.h"
#include "LightSensor.h"

uint8_t KeyNum;

int main(void)
{
    Buzzer_Init();
    LightSensor_Init();
    
    while(1)
    {
        if (LightSensor_Get() == 1)  // 电路接着光敏传感器OD,输出只有0,1,
        {
            Buzzer_ON();
        }
        else 
        {
            Buzzer_OFF();
        }
    }
}
 

效果图 


http://www.mrgr.cn/news/48193.html

相关文章:

  • 探索 JSON 数据在关系型数据库中的应用:MySQL 与 SQL Server 的对比
  • VS Code Copilot 与 Cursor 对比
  • 一起学Git【第一节:Git的安装】
  • [react] <NavLink>自带激活属性
  • springboot463学生信息管理系统论文(论文+源码)_kaic
  • sqlilabs靶场二十一关二十五关攻略
  • 【Unity基础】Unity内购支持哪些应用商店?
  • Carrier Aggregation 笔记
  • 基于Maven 运行OpenRewrite的快速示例
  • 探索机器学习中的特征选择技术
  • 【华为】配置RIP协议
  • 【cpp】模板函数 模板类 特化 书写格式备忘
  • 鸿蒙OS开发全面指南:从入门到实战的系统化学习路径
  • 【Redis十二】Redis的典型应用(缓存和分布式锁)
  • 电子取证新视角:USB键盘流量提取密码方法研究与实现
  • 【编程进阶知识】掌握Java线程高效管理:节省资源与提升性能的十大技巧
  • c#代码介绍23种设计模式_23备忘录模式
  • Rstudio 绘制elecdaily的时序图与预测
  • Chrome清除nslookup解析记录 - 强制http访问 - 如何禁止chrome 强制跳转https
  • 【WebGIS】Cesium:快速创建三维地图
  • R语言:ERGM指数随机图模型
  • 学习记录:js算法(六十一):添加与搜索单词 - 数据结构设计
  • 02.07.-链表相交
  • 深入理解Transformer的笔记记录(精简版本)---- ELMO->GPT->BERT
  • VS Code最新版本Retome远程ssh不兼容旧服务器问题
  • 10.11 QT数据库实现学生信息的增、删、改、查