stm32学习随笔23.11.6_2

LED&光敏电阻&蜂鸣器(伪)变频报警,随笔记录视频B站:BV1tG411971D

MAIN.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "BUZZER.h"
#include "LightSensor.h"
#include "LED.h"


//
int main(void)
{
    LightSensor_Init();
    BUZZER_Init();
    LED_Init();
    while(1)
    {
        if(LightSensor_Get()==1)
        {
            LED_On(7);
            BUZZER_Turn();
        }
        else
        {
            LED_Off(7);
            BUZZER_Off();
        }

BUZZER.c

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

void BUZZER_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//启用系统寄存器时钟,使能GPIOC组,并启动
    GPIO_InitTypeDef GPIO_InitStructure;    //初始化GPIO_Init后需要定义一个结构体配置信息,根据stm32f10x_gpio.c文件要求需要定义
    /*
    以下三项定义与stm32f10x_gpio.h文件中选择
    Mode模式Pin引脚Speed速度即频率
    */
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//OUT OD开漏输出
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    

    GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化结构体配置信息,并指向上4列代码配置信息
    
    GPIO_SetBits(GPIOB,GPIO_Pin_12);//设置高电平        
}

/*
*brief    简  介:打开开关蜂鸣器低电平
*param    参  数:无
*retval   返回值:无
*/
void BUZZER_On(void)
{
    GPIO_ResetBits(GPIOB,GPIO_Pin_12);//设置低电平
}
/*
*brief    简  介:关闭蜂鸣器开关高电平
*param    参  数:无
*retval   返回值:无
*/
void BUZZER_Off(void)
{
    GPIO_SetBits(GPIOB,GPIO_Pin_12);//设置高电平        
}
/*
*brief    简  介:获取引脚电平信号,控制当前蜂鸣器状态取反
*param    参  数:无
*retval   返回值:无
*/
void BUZZER_Turn(void)
{
    if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12)==0)
    {
        GPIO_SetBits(GPIOB,GPIO_Pin_12);//设置高电平
        Delay_ms(700);
    }
    else
    {
        GPIO_ResetBits(GPIOB,GPIO_Pin_12);//设置低电平
        Delay_ms(100);
    }
}

LightSensor.c
#include "stm32f10x.h"                  // Device header
/*
*brief    简  介:光敏电阻传感器配置初始化
*param    参  数:
*retval   返回值:
*/
void LightSensor_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//启用系统寄存器时钟,使能GPIOC组,并启动
    GPIO_InitTypeDef GPIO_InitStructure;    //初始化GPIO_Init后需要定义一个结构体配置信息,根据stm32f10x_gpio.c文件要求需要定义
    /*
    以下三项定义与stm32f10x_gpio.h文件中选择
    Mode模式Pin引脚Speed速度即频率
    */
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入模式
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    

    GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化结构体配置信息,并指向上4列代码配置信息
}

uint8_t LightSensor_Get(void)
{
    return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13);
}


posted @   上够了逼班的老王  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示